首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有关const的使用,该如何处理

2012-03-14 
有关const的使用首先,问下:1.const float *ptr3.142.float cinst *ptr3.143.const float const *ptr3

有关const的使用
首先,问下:
1.const float *ptr=3.14;
2.float cinst *ptr=3.14;
3.const float const *ptr=3.14
是什么意思啊!

还有能不能给先const的具体的使用方法,给几个例子,谢谢大家了

[解决办法]
const在*前后修饰的对象不同
*前修饰的是指针本身,*后修饰的是指向的数据
[解决办法]
总之不让改了
[解决办法]
就根据const是在*的左边还是右边,左边就表示指针指向的值不能改,后边就表示指针本身不能改
[解决办法]
从右向左的原则即可
[解决办法]
LZ所写的3个定义是错误的,指针变量所赋的应该是变量的地址而不是一个数据。
应该写成这样:
const float fVal = 3.14;
float fVal2 = 1.23;
1. const float *ptr= &fVal;
2. float cinst *ptr= &fVal;
3. const float const *ptr= &fVal; 
4. float * const ptr = &fVal2; 
5. const float * const ptr = &fVal1;
1、2、3意义都相同,其中第3个多了一个const
如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。因此,1和2的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*ptr = 6.28;
4为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如ptr++是错误的;5为指针本身和指向的内容均为常量。
[解决办法]
1.const float *ptr=3.14;
2.float cinst *ptr=3.14;
3.const float const *ptr=3.14


答:1. 表示指针指向常量3.14;
2.同上。float const 和const float 等同。看你的书写习惯了。
3. 这个有问题。声明常量指针应该是:const float * const ptr=3.14;
总之:这类带const 的声明;记住“从右往左读”,便能分辨const修饰的是指针还是指针指向的变量了。
[解决办法]
const float *p; //p 是指向const float 的指针,其本身值(地址)可变,而其指向的变量的值不可变
float const *p; //同上
float* const p; //p 是指向float的常指针,其本身值(地址)不可变,而其指向的变量的值可变

[解决办法]

探讨
首先,问下:
1.const float *ptr=3.14;
2.float const *ptr=3.14;
3.const float const *ptr=3.14
是什么意思啊!

还有能不能给先const的具体的使用方法,给几个例子,谢谢大家了

热点排行