非常量引用的初始值必须为左值
int &a =
1;
a =
2;
int i =
1;
int &a = (
int*)
0x12345678;
int &a = i;
a = (
int*)
0x12345678;
同样的,
int b(
1);
int *p = b;
int* &a = &b;
a = &b;
int* &c = p;
因为 &b是一个固定的地址,是不可修改的,是右值,而a不是 常指针的引用,是变指针的引用(可以改变指针指向),a是“非常量的引用”; p是一个可以改变指向的指针,是左值。
const 在前面 是修饰指针指向的内容,const在后面是修饰指针本身:
int *p = b;
const int*& d = p;
const int*q = &b;
const int*& d = q;
*d =
2;
const在*号前面是指指针指向的内容是const的,d还是非常量指针的引用;
–欢迎补充和指正!–