使用c++的时候,经常会在 const int *p 和 int * const p这个地方迷惑。这里记录一下:
const int *p = int const *p //这里const后面的为*p, 将他们视为一个整体,即 *p是const的,即p指针指向的内容是不可以修改的;但是p是可以修改的。
int* const p; //const 修饰的为p,即p是不可修改的,但是p指向的内容是可以修改的.
int a = 1, b = 2; const int c = 10; const int* p = &a; //*p = 10; //出错,不可修改指向的内容 a = 20; //可以通过别的手段修改,但是不能通过指针p修改 p = &b; //可以 int* const p2 = &a; //p2 = &b; //出错,不能修改指针 *p2 = 100; //可以 //int* const p3 = &c; //错误,非常量指针不能指向常量,因为可以通过*p3修改内容, //而c为常量,不能被修改。防止通过非常量指针修改常量 const int* p4 = &c;
如果*在const之后,则const就修饰的是 *p 表示指向的内容是const的; 如果 *在const之前,则const修饰的只是p,表示指针是const的,而内容可以改变。
原文链接: https://www.cnblogs.com/gtarcoder/p/4807342.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/221886
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!