A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一程序员朋友跟我说,在C中数组和指针是等价的。怎么理解?数组的引用会演变为指针,那么在数组引用时,数组名arr和&arr有什么区别?

18 个回复

倒序浏览
arr可等价于arr
回复 使用道具 举报
arr==&arr[0],但是不能等价于&arr。arr是数组名,&arr表示的数整个数组的地址
回复 使用道具 举报
指针的概念:内存单元的编号也叫做指针。既然根据内存单元的编号或地址就可以找到 所需的内存单元,所以通畅也把这个地址称为指针。
总结:对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的
数组名arr不代表整个数组,只代表数组首元素的地址。
数组的引用(访问数组的每个元素):一个变量有地址,一个数组包含若干元素,每个数组元素都有相应的地址 指针变量可以指向数组元素(把某一元素的地址放到一个指针变量中) 所谓数组元素的指针就是数组元素的地址 可以用一个指针变量指向一个数组元素,所以可以用指针来访问数组.
一维数组: arr是数组名,是一个常量,它代表一个数组的首地址          对于数组名没有&arr的写法,应该是:arr=&arr[0]都代表该数组的首地址

希望以上的解答能帮到你,谢谢~~有疑问可以追问,我会定期回答~~~
回复 使用道具 举报
楼上解释的很清晰
回复 使用道具 举报
alen2015 发表于 2015-11-27 01:00
指针的概念:内存单元的编号也叫做指针。既然根据内存单元的编号或地址就可以找到 所需的内存单元,所以通畅 ...

解释的很清晰
回复 使用道具 举报
指针大问题
回复 使用道具 举报
cc_2436 中级黑马 2015-11-27 22:30:47
8#
数组名arr表示数组第一个元素的地址 &arr表示整个数组的地址 当指向整个数组的指针+1的时候在内存中跨越的是整个数组
回复 使用道具 举报
kings 初级黑马 2015-11-27 22:50:39
9#
怎么觉得楼主跟我是一个班的,老师的arr【i】都搬过来换分了?
回复 使用道具 举报
学习学习
回复 使用道具 举报
怎么得积分啊!
回复 使用道具 举报
这是一个很好理解我的问题,,代码用几遍就明白了,,我起出也不明白的,是在打代码当中顿悟的
回复 使用道具 举报
wwpower 来自手机 中级黑马 2015-11-28 12:35:43
13#
怎么区别,学习一下。
回复 使用道具 举报
我也弄不太明白这一块尤其是arr1 arr2 折是什么意思啊
回复 使用道具 举报
hehe  heheh  hehe
回复 使用道具 举报
数组怎么可能是指针呢,,虽然指针可以操作数组,但是你自己去整理数组的定义和特点,自己比较一下,数组和指针的功能,你就明白了。arr==arr[0],而&arr虽然也是第一个元素的地址,但是不能当成数组第一个元素来用,&arr代表的是整个数组的指针
回复 使用道具 举报
不错...............
回复 使用道具 举报
两者之间确实有很多共同的地方,但是还是有区别的,不能等价,但是你如果不熟要搞科研的话,知道数组等于指针还是能解决一大部分问题的,但是不能深究!
回复 使用道具 举报
alen2015 发表于 2015-11-27 01:00
指针的概念:内存单元的编号也叫做指针。既然根据内存单元的编号或地址就可以找到 所需的内存单元,所以通畅 ...

谢谢大神指教!很详细
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马