扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在普通指针类型前面,加上const修饰
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、虚拟空间、营销软件、网站建设、彭水苗族土家族网站维护、网站推广。
例如:
加不加const,有什么区别?
const的作用是限制星号操作里的写内存功能(这块内存只能读,不能写)
const 用于限定函数的参数
用于显式地制定:该函数的参数是输入参数,在函数里面只是读取这个内存,而不会修改这个内存的值
当你不需要修改内存时,在指针前面加上const修饰,避免一不小心的错误发生。
const只是限制的星号操作,不允许写内存,但是对于普通的指针加减法是没关系的
const关键字的作用主要有以下几点:
(1)可以定义const常量,具有不可变性。 例如: const int Max=100; int Array[Max];
(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;
(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
(6) 可以节省空间,避免不必要的内存分配。
软件测试的种类有:性能测试、功能测试、兼容测试、压力测试、负载测试、验收测试。
验收测试包括:
(1)软件功能确认测试:功能测试的主要内容包括软件安装、卸载测试,用户手册中提及的所有功能测试及边界值测试。
(2)安全可靠性测试:用户权限限制测试、留痕功能测试、屏蔽用户操作错误应答测试、系统备份与恢复手段测试、多用户操作输入数据有效性测试、异常情况及网络故障对系统的影响测试。
(3)易用性测试:易用性测试主要着重易学易用性、联机帮助、功能操作程度的难易性、软件界面清晰程度等几个方面。其测试标准主要考察软件的各个功能项的操作是否有联机帮助,非计算机专业用户是否可通过用户手册轻松操作。
(4)可扩充性测试:任何一个版本的软件系统都有一定的使用周期,每格一段时间就需要升级,进行功能扩充。此外,有的软件系统还需要与其它软件系统进行数据交流。这就需要检测软件系统升级是否方便;是否留有非本系统的数据接口,以方便数据的传输。
(5)兼容性测试:兼容性测试是软件测试中的重要一环,其测试内容是软件在规定的不同操作系统中运行是否正常。在规定的不同数据库系统上运行是否正常,以及在规定的不同型号的硬件环境中运行是否正常。
(6)效率测试:随着局域网站数的增加以及广域网的使用,数据的网络传输时间和存取时间逐渐变成软件使用中的瓶颈,所以如何提高运行效率已成为各方面注意的焦点,也成为衡量软件产品质量的指标之一。进行这一测试技术性较强,需要了解待测软件系统采用什么样的传输协议,已及什么样的传输方式。测试时需要必要的测试环境及使用专用网络测试工具。
(7)资源占用率测试:系统资源一般是指内外存储、CPU、通讯端口以及网络带宽等系统资源。如何合理利用系统资源是与软件系统的性能密切相关的。
一、const int 和int 的区别
1、返回值
const int 是返回这个数值的一个常量的引用。
而int 是返回这个数值的一个拷贝。
int 是进行拷贝构造,而const int 是返回的引用。拷贝构造更消耗时间,与此同时还用析构函数。因为产生了一个拷贝,你就可以轻易地修改拷贝的内容。
2、取指针
const int类型一旦定义以后就不能修改,int类型是随时可以修改的。
在取指针方面,const有略复杂的东西,但是常规的、合理的操作不应该涉及到,因为const int是用来保存一些全局常量的,这些常量在编译期可以改,在运行期不能改。
听起来这像宏,其实这确实就是用来取代宏的: #define PI 3.14 const float Pi = 3.14; 如果你的代码里用到了100次PI(宏),你的代码中会保存100个3.14这个常数。
鉴于使用常数进行运算的机器代码很多时候会比使用变量来的长,如果你换用100次Pi(const float),程序编译后的机器码里就不需要出现100次常量3.14,只要在需要的时候引用存有3.14的常量就行了。
特别在复杂的运算里,3.14这个常量(其实是无法修改的变量)会被一直装载在寄存器里带来一些性能提升。
3、内容
constint* p; //p可变,p指向的内容不可变,int const* p; //p可变,p指向的内容不可变。 int* const p; //p不可变,p指向的内容可变 const int* const p; //p和p指向的内容都不可变。
二、const的作用:
1、可以定义const常量,具有不可变性。
例如:const int Max=100; Max++会产生错误;
2、便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;
3、可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。 同宏定义一样,可以做到不变则已,一变都变!
如1中,如果想修改Max的内容,只需要它修改成:const int Max=you want;即可!
4、可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错;
例如: void f(const int i) { i=10;//error! }
5、可以节省空间,避免不必要的内存分配。
扩展资料
当const修饰的是指针类型,那么指针的值就不能改变,即不能指向其他地址,但是可以通过指针修改其指向地址里面的值。
当const修饰时指针指向的类型时候,那么指针被指向其他地址,但是不能通过指针修改指针里面的值。
1)先从const int i说起。
使用const修饰的i我们称之为符号常量。即,i不能在其他地方被重新赋值了。注意:const int i与int const i是等价的,相同的,即const与int的位置无所谓。
2)const int *p
看例子:
int i1=30;
int i2=40;
const int *p=i1;
p=i2; //此处,p可以在任何时候重新赋值一个新的内存地址。
i2=80; //这里能用*p=80来代替吗?答案是不能
printf("%d",*p); //输出80
分析:p的值是可以被修改的,即它可以重新指向另一个地址。但是不能通过*p来修改i2的值。
首先,const修饰的是整个*p(注意,是*p而不是p),所以*p是常量,是不能被赋值的。虽然p所指的i2是变量而不是常量;
其次,p前并没有用const修饰,所以p是指针变量。能被赋值重新指向另一个内存地址。
参考资料:百度百科——const
const关键字至少有下列n个作用:
(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;
(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;
(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;
(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;
(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”。例如:
const classA operator*(const classA a1,const classA a2);
operator*的返回结果必须是一个const对象。如果不是,这样的变态代码也不会编译出错:
classA a, b, c;
(a * b) = c; // 对a*b的结果赋值
操作(a * b) = c显然不符合编程者的初衷,也没有任何意义。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流