注册 登录
编程论坛 C++教室

int *const num与const int *num的区别

abang8114 发布于 2007-06-05 21:12, 830 次点击
谁能给我讲讲int *const num与const int *num的区别,先在这谢谢了!

[此贴子已经被作者于2007-6-5 21:54:40编辑过]


7 回复
#2
linsq2007-06-05 21:38

第一个好象是指向整型数据的常指针,第二个应该是指向常整型数据的一般指针
不知道对不对。。。

#3
aipb20072007-06-05 21:46
第一个还真没看到过,孤陋寡闻了!^^' 估计是你弄错了吧!!!
2的个是一个int类型的指针,指向一个const类型的int。
#4
abang81142007-06-05 21:56

哦对不起写错了应该是这样int *const num与const int *num的区别

#5
yuyunliuhen2007-06-05 22:20
int *const num 指向int的const指针num;
const int *num num是一个指针,它指向一个const int,ji指向const int的指针num;和int const* num是一样的

const int *num 不需初始化,num可以指向任何标识,他指向的值是不可以改变的

int *const num 他本身是一个const指针,需要一个初值,指针在生命期间内值不变,可以改变他的值;
如:
int d =1;
int *const num=&d;
*num=2;


#6
wfpb2007-06-05 22:27

到过来念:
int * const num
int 指向,指针 常量 是 num

const int * num
常量 int 指向,指针 是 num

#7
aipb20072007-06-05 23:15
说的都很好啊!我就不累赘了哈!
#8
o0小猪0o2007-06-06 01:41
呵呵在一个论坛上看到的
如果形象一点的说,可以这样认为:const就是一把锁,锁住了就不可以更改。
如:
char stringptr1[]="abcdefghijk";
char * const ptr1 = stringptr1;
相当于锁住了指针ptr1,以后ptr1就不可以指向其他的地址。或者说存储单元
ptr1中的内容不可更改,只能是地址stringptr1。
但是,stringprt1并没有被锁住,所以,*ptr1 = "m"; 是正确的,相当于改变
了stringptr1的值:
stringptr1[0]=m;
stringptr[1]=’’
ptr1=string2是让ptr1不再指向stringptr1,造成错误。
而const * ptr2 = stringptr1; 它是锁住了stringptr1,不允许通过指针ptr2
修改,所以*ptr1="m"不对。
1