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

面试题 相关文章推荐
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
Feb 08 面试题
枚举和一组预处理的#define有什么不同
Sep 21 面试题
字符串str除首尾字符外的其他字符按升序排列
Mar 08 面试题
杭州时比特电子有限公司SQL
Aug 22 面试题
用友笔试题目
Oct 25 面试题
介绍一下常见的木马种类
Nov 15 面试题
初级软件工程师面试题 Junior Software Engineer Interview
Feb 15 面试题
网上常见的一份Linux面试题(多项选择部分)
Sep 09 面试题
MVC的各个部分都有那些技术来实现?如何实现?
Apr 21 面试题
什么时候用assert
May 08 面试题
Java的类与C++的类有什么不同
Jan 18 面试题
Unix里面如何在后台运行程序
Oct 14 面试题
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
Apr 28 #面试题
C语言面试题
May 19 #面试题
C有"按引用传递"吗
Sep 06 #面试题
求高于平均分的学生学号及成绩
Sep 01 #面试题
上海方立数码笔试题
Oct 18 #面试题
在C中是否有模拟继承等面向对象程序设计特性的好方法
May 22 #面试题
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
Dec 05 #面试题
You might like
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
curl和libcurl的区别简介
2015/07/01 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
PHP中有关长整数的一些操作教程
2019/09/11 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
JavaScript实现横向滑出的多级菜单效果
2015/10/09 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
采购主管工作职责
2013/12/12 职场文书
工地资料员岗位职责
2013/12/31 职场文书
创新型城市实施方案
2014/03/06 职场文书
电大毕业个人生自我鉴定
2014/03/26 职场文书
竞聘书模板
2014/03/31 职场文书
企业宣传工作方案
2014/06/02 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
环境保护宣传标语大全!
2019/06/28 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
Win11 KB5015814遇安装失败 影响开始菜单性能解决方法
2022/07/15 数码科技
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS