漫谈C指针第四讲---指针与数组
来源:互联网 发布:淘宝二级页面打不开 编辑:程序博客网 时间:2024/06/06 09:59
通过数组名访问数组元素
看下面代码:
int i, a[] = {3,4,5,6,7,3,7,4,4,6};for (i = 0; i <= 9; i++){ printf("%d\n", a[i]);}
很显然,它是显示a 数组的各元素值。
我们还可以这样访问元素,如下:
int i, a[] = {3,4,5,6,7,3,7,4,4,6};for (i = 0; i <= 9; i++){ printf("%d\n", *(a+i));}
它的结果和作用完全一样。
通过指针访问数组元素
int i, *pa, a[] = {3,4,5,6,7,3,7,4,4,6};pa = a; /*请注意数组名a直接赋值给指针pa*/for (i = 0; i <= 9; i++){ printf("%d\n", pa[i]);}
很显然,它也是显示a 数组的各元素值。
另外与数组名一样也可如下:
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+i));}
看pa = a,即数组名赋值给指针,以及通过数组名、指针对元素的访问形式看,它们并没有什么区别,从这里可以看出:数组名其实也就是指针。难道它们没有任何区别?有,请继续。
数组名与指针变量的区别
请看下面的代码:
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++。
前面pa[i],*(pa+i)处,指针pa的值是使终没有改变。所以变量指针pa与数组名a可以互换。
0 0
- 漫谈C指针第四讲---指针与数组
- 漫谈C指针第二讲---变量赋值与取地址
- 第五讲:c/c++数组与指针
- 漫谈C指针第三讲---指针是什么东西
- 漫谈C指针第五讲---声明指针常量
- 漫谈C指针第十二讲---回顾指针概念
- 漫谈C指针第十四讲---一个指针应用实例
- 漫谈C指针第十五讲---函数名其实也是指针
- 漫谈C指针第十六讲---函数调用的指针写法
- 漫谈C指针第十七讲---定义函数的指针类型
- C++primer第四版第四章数组与指针
- 第四章数组与指针(指针)
- 第四章指针与数组
- 漫谈C指针第一讲---C语言变量的实质
- C与指针第八章数组编程练习第四题
- C++primer学习笔记第四章-数组与指针
- 《C语言深度解剖》第四章 数组与指针 总结
- 指针,数组转换漫谈
- 异常处理
- 【树分治】poj1741
- my.cnf
- 冗余 自动化 安全(优秀)
- 2小时玩转python基础(上)
- 漫谈C指针第四讲---指针与数组
- Navicat访问MySQL出现1044/1045错误的解决方法
- Java collections小知识收集
- iOS 关于UICollectionView的cell重用问题
- iOS资料大全收集
- 活该你单身......都好好单着吧
- HDU 1695 GCD(欧拉函数+容斥原理)
- php学习--3 流程控制语句,字符串操作
- phpstorm 8.x注册码