int a = 2;
int b = 3;
int *const p1 = &a;//指针常量:被定义的指针变量就变成了一个指针类型的常变量,指针不可以变,指针指向的内容可以变,需要在定义的时候给定初值
int const *p2 = &b;//常量指针:指向常量的指针变量,指针可以变,指针指向的内容不可以变,等价于const int *p2 = &b;
int const *const p3 = &a;//常指针常量: 指针不能改变,指针指向的值也不能改变,等价于const int *const p3 = &a;
// Error: Cannot assign to variable 'p3' with const-qualified type 'const int *const'
// p3 = &a;
// Error: Read-only variable is not assignable
//*p3 = a;
NSLog(@"%d,%d,%d,%d", a, b, *p1, *p2);
NSLog(@"%p,%p,%p,%p", &a, &b, p1, p2);
NSLog(@"p3: %d, %p", *p3, p3);
// Error: Cannot assign to variable 'p1' with const-qualified type 'int *const'
// p1 = &b;
*p1 = b;
// Error: Read-only variable is not assignable
// *p2 = a;
p2 = &a;
NSLog(@"%d,%d,%d,%d", a, b, *p1, *p2);
NSLog(@"%p,%p,%p,%p", &a, &b, p1, p2);
NSLog(@"p3: %d, %p", *p3, p3);
/*
Log:
2018-07-20 10:55:13.483435+0800 Test[23866:178166] 2,3,2,3
2018-07-20 10:55:13.483684+0800 Test[23866:178166] 0x7ffeee4ada9c,0x7ffeee4ada98,0x7ffeee4ada9c,0x7ffeee4ada98
2018-07-20 10:55:13.483834+0800 Test[23866:178166] p3: 2, 0x7ffeee4ada9c
2018-07-20 10:55:13.484039+0800 Test[23866:178166] 3,3,3,3
2018-07-20 10:55:13.484224+0800 Test[23866:178166] 0x7ffeee4ada9c,0x7ffeee4ada98,0x7ffeee4ada9c,0x7ffeee4ada9c
2018-07-20 10:55:13.484377+0800 Test[23866:178166] p3: 3, 0x7ffeee4ada9c
*/
C++ 指针常量、常量指针和常指针常量
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程...
- 正文之前 今天下午看了一下午的计算机组成与设计,结果好死不死的看到了设计部分--处理器的设计。天哪,我现在还只是一...
- 转自:http://blog.csdn.net/soonfly/article/details/51131141 ...