关于网友提出的“ const限定修饰符总结”问题疑问,本网通过在网上对“ const限定修饰符总结”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: const限定修饰符总结
描述: const限定修饰符
请指出以下的几个区别,如果你完全明白,请点击窗口右上角的小叉叉。
1.const int i;
2.const int* ptr;
3.int *const ptr;
4.const int *const ptr;
分别解答:
1. [const int i;]i是一个const常量,定义时候必须被初始化;所以严格的说const int i不会
通过编译。以后不可以改变。
例如
错误用法1:
const int i;//没有初始化
错误用法2:
const int i=2;
..
i=3;//错误,不可以改变
2.[const int* ptr;],ptr是一个指向int类型的,被定义成const对象的指针。
ptr本身是变量,可以指向新的对象(无论新的对象是否是const类型,只要是int类型的)
但是不可以改变所指向const对象的值。
例如:
const int i=2;
const int *ptr =&i;
...
const int ii =3;
int iii =4;
错误用法1:
*ptr = 5;//编译不过,不可以改变所指向const对象的值
允许用法1:
*ptr = ⅈ
允许用法2:
*ptr = &iii;
3[int *const ptr;]ptr是一个指向int类型的const指针。ptr不能指向其他地址,
但是可以修改所指向的值。
例子:
错误用法1:
const int i=2;
int *const ptr =&i;//不能指向const对象
错误用法2:
int i=2,j=3;
int *const ptr =&i;
ptr=&j;//不能再指向其他地址
允许用法1:
int i=2;
int *const ptr = &i;
*ptr =3;
4.[const int *const ptr;]指向const对象的const指针,既不能修改指针所指向的值
也不能给指针其他的地址值。(是2,3的综合体)
不正确的地方,欢迎指正。
以上介绍了“ const限定修饰符总结”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3289620.html