在C语言中"指针和数组等价"到底是什么意思?


Posted in 面试题 onMarch 24, 2014
在C语言中对数组和指针的困惑多数都来自这句话。说数组和指针“等价”不表示它们相同, 甚至也不能互换。它的意思是说数组和指针的算法定义可以用指针方便的访问数组或者模拟数组。
特别地,等价的基础来自这个关键定义:
一个T 的数组类型的左值如果出现在表达式中会蜕变为一个指向数组第一个成员的指针(除了三种例外情况); 结果指针的类型是T的指针。
这就是说, 一旦数组出现在表达式中, 编译器会隐式地生成一个指向数组第一个成员地指针, 就像程序员写出了&a[0] 一样。例外的情况是, 数组为sizeof 或&操作符的操作数, 或者为字符数组的字符串初始值。
作为这个这个定义的后果, 编译器并那么不严格区分数组下标操作符和指针。在形如a[i] 的表达式中, 根据上边的规则, 数组蜕化为指针然后按照指针变量的方式如p[i] 那样寻址, 如问题6.2 所述, 尽管最终的内存访问并不一样。如果你把数组地址赋给指针:
p = a;
那么p[3] 和a[3] 将会访问同样的成员。

Tags in this post...

面试题 相关文章推荐
如何提高JDBC的性能
Apr 30 面试题
C/C++有关内存的思考题
Dec 04 面试题
What is view? why do we have view?
Jun 22 面试题
介绍一下Transact-SQL中SPACE函数的用法
Sep 01 面试题
利达恒信公司.NET笔试题面试题
Mar 05 面试题
override和overload的区别
Mar 09 面试题
C#软件工程师英语面试题
Jun 07 面试题
C#中的验证控件有几种
Mar 08 面试题
linux下进程间通信的方式
Dec 23 面试题
EntityManager都有哪些方法
Nov 01 面试题
线程同步的方法
Nov 23 面试题
Unix控制后台进程都有哪些进程
Sep 22 面试题
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
Apr 28 #面试题
C语言面试题
May 19 #面试题
C有"按引用传递"吗
Sep 06 #面试题
求高于平均分的学生学号及成绩
Sep 01 #面试题
上海方立数码笔试题
Oct 18 #面试题
在C中是否有模拟继承等面向对象程序设计特性的好方法
May 22 #面试题
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
Dec 05 #面试题
You might like
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
基于mysql的bbs设计(三)
2006/10/09 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
php基于dom实现的图书xml格式数据示例
2017/02/03 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
javascript实现html页面之间参数传递的四种方法实例分析
2015/12/15 Javascript
JavaScript通过代码调用Flash显示的方法
2016/02/02 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
教大家轻松制作Bootstrap漂亮表格(table)
2016/12/13 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
详解vue路由
2020/08/05 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
python使用arcpy.mapping模块批量出图
2017/03/06 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
浅谈Python协程
2020/06/17 Python
详解python程序中的多任务
2020/09/16 Python
预备党员入党自我评价范文
2014/03/10 职场文书
服务标语口号
2014/07/01 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python