int *const &x与int *&x的区别是什么

来源:百度知道 编辑:UC知道 时间:2024/05/16 00:55:45
既然有人说引用的功能其实和type * const p指针是相同的,那int *const &x中const是否可有可无??

int *const &x中的const不能没有!
实际上这里可以去掉&来讨论,如果去掉&来理解,是不是明了些?

这是x的引用的类型是int*,而*后的const是用来限制变量的指向不可变,如果有,那么x指向的地址不可变,如果没有,可以改变x:
int i = 0, j = 1;
int *const &x = &i;
int * &p = &i;
x = &j; //error,x的指向不可变
*x = 2; //OK
p = &j; //OK

1L说的对的,我再试着说个更好的理解吧.
首先提取const,看看修饰的是什么?
我们看到:它是修饰引用类型的.
引用类型修饰的什么类型?
我们看到:对应的是int *;即int 型指针.

那么来看:int *const &x:
const修饰的是一个引用,这个引用所对应(修饰)的是一个int指针类型.所以指针型引用不能修改.即x不能引用其他指针了.

const关键字实在是神通广大

如果const出现在星号(*)的左边,指针指向的数据为常量;如果const出现在星号(*)的右边,指针本身为常量;如果const在星号(*)的两边都出现,二者都是常量。