请再看下面的代码:
#include "stdio.h" main() { int i, a[] = {3,4,5,6,7,3,7,4,4,6}; int *const pa = a; /* 注意const的位置:不是const int *pa */ for (i = 0; i <= 9; i++) { printf("%d\n", *pa); pa++ ; /*注意这里,指针值被修改*/ } }
这时候的代码能成功编译吗?不能。因为pa指针被定义为常量指针了。这时与数组名a已经没有不同。这更说明了数组名就是常量指针。但是……
int *const a = {3,4,5,6,7,3,7,4,4,6}; /*不行*/ int a[]={3,4,5,6,7,3,7,4,4,6}; /*可以,所以初始化数组时必定要这样。*/
延伸阅读
此文章所在专题列表如下:
- 漫谈C指针:C语言变量的实质
- 漫谈C指针:变量赋值与取地址
- 漫谈C指针:指针是什么东西
- 漫谈C指针:指针与数组
- 漫谈C指针:声明指针常量
- 漫谈C指针:从const int i说起
- 漫谈C指针:const int *pi的语义
- 漫谈C指针:参数传递的三道题目
- 漫谈C指针:参数的值传递
- 漫谈C指针:参数的地址传递
- 漫谈C指针:参数的引用传递
- 漫谈C指针:回顾指针概念
- 漫谈C指针:指向另一指针地址的指针
- 漫谈C指针:一个指针应用实例
- 漫谈C指针:函数名其实也是指针
- 漫谈C指针:函数调用的指针写法
- 漫谈C指针:定义函数的指针类型
- 漫谈C指针:函数指针作为函数参数使用
本文地址:http://www.nowamagic.net/librarys/veda/detail/2123,欢迎访问原出处。
大家都在看