const和指针的交叉问题
2014-10-05 15:28
162 查看
一、const限定符
const用于声明一个常量,即这个量的值不允许被修改。咋一看类似Java中的关键字final。
这也提示我们,常量被赋值的唯一机会是在声明的地方(如果不赋值,编译器也会报错!)。
二、const指针
这一点很容易理解。因为指针本身代表的就是地址嘛!
三、指向const对象的指针(一)
指向const对象的指针既可以指向const量也可以指向非const量,但是编译器无法判断指向的是哪种情况,所以均不允许其改变所指向的值。 在实际的程序中指向const 的指针常被用作函数的形式参数它作为一个约定来保证被传递给函数的实际对象在函数中不会被修改。例如在实际的程序中, 指向常量的指针往往被用作函数参数
int strcmp( const char *str1, const char *str2 );
推荐一篇文章
http://www.cnblogs.com/xkfz007/archive/2012/02/27/2370478.html
const用于声明一个常量,即这个量的值不允许被修改。咋一看类似Java中的关键字final。
const double cd = 3.14;以后任何企图给cd常量赋值的行为,编译器都会报错。
这也提示我们,常量被赋值的唯一机会是在声明的地方(如果不赋值,编译器也会报错!)。
二、const指针
double cd = 3.14, cd2 = 3.14159; double *const cpd = &cd; //声明 cpd = &cd2; //非法:指向的地址不可以被改变 *cpd = 3.14159; //合法:可以改变其指向的值,因为cd不是常量。此处声明了一个指向double型的const指针cpstr:指向的地址不可以被改变,但是可以改变其指向的值(如果指向const对象,值同样不可被改变)。
这一点很容易理解。因为指针本身代表的就是地址嘛!
三、指向const对象的指针(一)
double cd = 3.14, cd2 = 3.14159; const double *cpd = &cd; //声明 cpd = &cd2; //合法:指向的地址可以被改变 *cpd = 3.14159; //非法:不可以改变其指向的值。
指向const对象的指针既可以指向const量也可以指向非const量,但是编译器无法判断指向的是哪种情况,所以均不允许其改变所指向的值。 在实际的程序中指向const 的指针常被用作函数的形式参数它作为一个约定来保证被传递给函数的实际对象在函数中不会被修改。例如在实际的程序中, 指向常量的指针往往被用作函数参数
int strcmp( const char *str1, const char *str2 );
推荐一篇文章
http://www.cnblogs.com/xkfz007/archive/2012/02/27/2370478.html
相关文章推荐
- 关于const指针和指向const对象的指针的初始化问题
- 分享:程序笔试题-const变量通过指针修改问题
- 文章标题 boost指针的引用计数,以及引发的资源共享和boost指针的交叉问题
- 关于const指针和指向const类型的指针的问题
- const类型的指针是否可变问题
- 经典问题解析(1)---const和引用、指针与引用、函数重载、C方式编译
- 关于多重间接运算指针的const问题
- const变量通过指针修改问题
- 程序笔试题-const变量通过指针修改问题
- c语言---const搭配指针问题
- 程序笔试题-const变量通过指针修改问题
- 关于const常量与指针赋值的问题
- (转)const变量通过指针修改问题
- C++中const和指针*的组合问题
- 关于const修饰指针的问题
- 智能指针的交叉引用问题及解决方法
- 【C++】关于带const的指针问题
- const 修饰指针的问题
- 函数返回const引用形参的指针问题
- 【c/c++笔试题一】const变量通过指针修改问题