const int * 和 int * const 傻傻分不清楚
const int * a和int const *a一样,定义时不是必须初始化,指针可以指向其他变量,但是指向的变量的值不能修改。
int * const定义时必须初始化,即必须指明指向哪个变量,定义后就不能再指向其他变量,但是指针指向的变量的值可以被修改。
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 //a和b是一样的,代表一个常整型数,必须手动初始化 6 const int a = 0; 7 int const b = 1; 8 int ca = 3; 9 int cb = 4; 10 //c是一个指向常整数型的指针,可以不初始化 11 int const *c ;//同const int *c; 12 c = &ca; 13 cout << *c << endl;//3 14 //指针本身可以修改:可以再指向其他变量 15 c = &cb; 16 cout << *c << endl;//4 17 //指针所指向的内存数据不能被修改:指针指向的变量不能再被赋值 18 //*c = 5;//error 19 20 int *e = &ca; 21 cout << *e << endl;//3 22 e = &cb;//正常的指针和变量都不是const的话可以改变指针的指向 23 cout << *e << endl;//4 24 *e = 6;//正常的指针和变量都不是const的话可以改变指针所指向变量的值 25 cout << *e << endl;//6 26 //d是常指针,必须初始化:指明指针指向哪个变量 27 int * const d= &ca; 28 cout << *d << endl;//3 29 //指针变量本身不能修改,即不能再指向其他变量 30 //d = &cb;//error 31 *d = 7; 32 //可以改变指针所指向的变量的值 33 cout << *d << endl;//7 34 35 //f:一个指向常整型的常指针(指针和它所指向的内存空间,均不能被修改) 36 const int * const f = &cb; 37 cout << *f << endl; 38 //f = &ca;//error 39 //*f = 9;//error 40 system("pause"); 41 return 0; 42 }