在定义指针变量的时候
- const 在 * 之前 :表示 const 是对数据类型进行修饰,也就是我们不可以通过修改指针变量间接修改它所指向的数;反过来,如果要让指针指向一个const修饰的量,就应该采用这种方法。
- const 在 * 之后 : 表示 const 是对这个指针变量本身进行修饰,使其指针只指向一个固定的地址,不可转移,指针值不可修改而变成常指针;由于常指针的值一旦给定就不可修改,所以在定义常指针时需要给定一个正确的初始值。
- int i=0 //定义一个变量
- int* const cp=&i; //定义一个常指针指向i
- cp=NULL; //错误,不能让常指针指向其他地址
- *cp=2; //正确,可以修改常指针所指向的变量i
- int const *cv; //定义一个指向常量的指针
- cv=&i; //正确,可以修改指针变量的指针值
- *cv=4; //错误,1.不能通过指向常量的指针修改它所指向的常量; 2.这里i可以直接修改,但是不能通过cv这个指针对其修改
如果有必要,可以在*的前后都加上const,使这个指针彻底不可修改,既不可以修改它本身的值,也不可以通过它坚决修改它所指向的值。