c数组名和指针
2015-09-12 14:15
162 查看
1.请看下面的代码:
int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6};
pa = a;
for (i = 0; i <= 9; i++)
{
printf("%d\n", *pa);
pa++; /*注意这里,指针值被修改*/
}
可以看出,这段代码也是将数组各元素值输出。不过,你把循环体{}中的pa改成a试试。你会发现程序编译出错,不能成功。看来指针和数组名还是不同的。其实上面的指针是指针变量,而数组名只是一个指针常量。指针pa在整个循环中,其值是不断递增的,即指针值被修改了。数组名是指针常量,其值是不能修改的,因此不能类似这样操作:a++。
2、 再请看下面的代码
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}; /*可以,所以初始化数组时必定要这样。*/
3.int *const pi VS int const *pi
1) 如果const 修饰在*pi前,则不能改的是*pi(即不能类似这样:
*pi=50;赋值)而不是指pi。
2) 如果const 是直接写在pi前,则pi不能改(即不能类似这样:pi=&i;
赋值)。
int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6};
pa = a;
for (i = 0; i <= 9; i++)
{
printf("%d\n", *pa);
pa++; /*注意这里,指针值被修改*/
}
可以看出,这段代码也是将数组各元素值输出。不过,你把循环体{}中的pa改成a试试。你会发现程序编译出错,不能成功。看来指针和数组名还是不同的。其实上面的指针是指针变量,而数组名只是一个指针常量。指针pa在整个循环中,其值是不断递增的,即指针值被修改了。数组名是指针常量,其值是不能修改的,因此不能类似这样操作:a++。
2、 再请看下面的代码
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}; /*可以,所以初始化数组时必定要这样。*/
3.int *const pi VS int const *pi
1) 如果const 修饰在*pi前,则不能改的是*pi(即不能类似这样:
*pi=50;赋值)而不是指pi。
2) 如果const 是直接写在pi前,则pi不能改(即不能类似这样:pi=&i;
赋值)。
相关文章推荐
- uva 10816 Travel in Desert (最小生成树 + 最短路)
- Hadoop安装准备
- Android ADT远程主机强迫关闭了一个现有的连接 Connection attempts: 1 解决方法
- 禁止Win7系统sql server等开机启动项,提升开机速度
- CKFinker 2.5.0.1 去demo标示
- Ztree之简单实现(一)
- ZOJ Fiddlesticks (简单模拟)
- Angular绑定数据时转义html标签
- 秋天是养胃好时机
- LeetCode_remove-duplicates-from-sorted-array
- servlet生命周期
- Android搭建简单的主体界面框架-SlidingPaneLayout
- IOS UILabel 设置圆角
- MySQL学习总结
- 聊聊本地前端数据的持久化解决方案
- 二叉树
- 转:Qt项目中遇到的一些小问题汇总
- 关于《JavaScript DOM 编程艺术》一书中getHTTPObject.js 的一点看法
- ActiveX控件实现安全的初始化和脚本
- yii2.0数据库迁移 [多个数据库同时同步数据]