在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...

面试题 相关文章推荐
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
Jul 16 面试题
写一个方法1000的阶乘
Nov 21 面试题
介绍一下#error预处理
Sep 25 面试题
计算s=f(f(-1.4))的值
May 06 面试题
数据库什么时候应该被重组
Nov 02 面试题
一套C#面试题
Oct 09 面试题
Linux如何命名文件--使用文件名时应注意
Jan 22 面试题
如何进行Linux分区优化
Sep 13 面试题
中软国际Java程序员笔试题
Jul 19 面试题
Unix/Linux开发面试题
Aug 16 面试题
JSF的标签库有哪些
Apr 27 面试题
创联软件面试题笔试题
Oct 07 面试题
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
Apr 28 #面试题
C语言面试题
May 19 #面试题
C有"按引用传递"吗
Sep 06 #面试题
求高于平均分的学生学号及成绩
Sep 01 #面试题
上海方立数码笔试题
Oct 18 #面试题
在C中是否有模拟继承等面向对象程序设计特性的好方法
May 22 #面试题
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
Dec 05 #面试题
You might like
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
WordPress网站性能优化指南
2015/11/18 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
js 上传图片预览问题
2010/12/06 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
js实现canvas图片与img图片的相互转换的示例
2017/08/31 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
Node.js利用断言模块assert进行单元测试的方法
2017/09/28 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
js如何实现元素曝光上报
2019/08/07 Javascript
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
深入理解Django中内置的用户认证
2017/10/06 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
简述 Python 的类和对象
2020/08/21 Python
2014国培学习感言
2014/03/05 职场文书
教师国庆节演讲稿范文2014
2014/09/21 职场文书
交通事故责任认定书
2015/08/06 职场文书
学生会工作感言
2015/08/07 职场文书
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技