黑马程序员技术交流社区

标题: 数组中 arr与&arr [打印本页]

作者: 韦德460    时间: 2015-12-29 01:11
标题: 数组中 arr与&arr
int arr[3] = {1,2,3};
printf("arr = %p",arr);
printf("&arr = %p",&arr);

为什么打印出来arr和&arr的地址相同?
&arr 不是应该是 arr的地址吗?

求大牛解答


作者: 韦德460    时间: 2015-12-29 01:13
@allen927

作者: 15931110616    时间: 2015-12-29 13:53
个人认为arr就是首元素地址,arr也是数组名。&arr的话 还是相当于取的数组首元素地址。
作者: 15931110616    时间: 2015-12-29 13:56
我也是刚学完数组和指针, 我的理解错的可能性很大。 有正确答案的话 也请告诉我一下
作者: 韦德460    时间: 2015-12-29 18:30
15931110616 发表于 2015-12-29 13:56
我也是刚学完数组和指针, 我的理解错的可能性很大。 有正确答案的话 也请告诉我一下 ...

对一维数组来说,arr是数组第一个元素的地址,&arr是整个数组的地址
对二维数组来说,arr是数组第一行的地址,&arr是整个数组的地址

具体为什么现在还不知道,不过应该很快就知道了
作者: 15931110616    时间: 2015-12-30 13:18
韦德460 发表于 2015-12-29 18:30
对一维数组来说,arr是数组第一个元素的地址,&arr是整个数组的地址
对二维数组来说,arr是数组第一行的 ...

arr  是常量吧? 定义之后就是常量。所以才这样。
作者: 韦德460    时间: 2015-12-30 17:54
15931110616 发表于 2015-12-30 13:18
arr  是常量吧? 定义之后就是常量。所以才这样。

主要是因为数组是构造类型,所以才这样
作者: Manli123    时间: 2015-12-30 18:12
arr本来就是数组的首地址,&arr是啥玩意就不懂了
作者: 韦德460    时间: 2015-12-30 23:21
Manli123 发表于 2015-12-30 18:12
arr本来就是数组的首地址,&arr是啥玩意就不懂了

对一维数组来说,arr是数组第一个元素的地址,&arr是整个数组的地址
对二维数组来说,arr是数组第一行的地址,&arr是整个数组的地址
作者: 一步步往上爬    时间: 2016-1-2 14:18
数组名就是地址
作者: yfh349958021    时间: 2016-1-2 15:29
&arr是数组地址,arr是数组第一个元素的地址
作者: 一步步往上爬    时间: 2016-1-3 12:44
arr是数组名,数组名就是首地址
作者: HHE_johnson    时间: 2016-1-3 16:05
arr数组名就是数组的地址,也是str[0]地址。
作者: 韦德460    时间: 2016-1-3 22:27
HHE_johnson 发表于 2016-1-3 16:05
arr数组名就是数组的地址,也是str[0]地址。

arr数组名是数组第一个元素的地址,&arr才是数组的地址
作者: HHE_johnson    时间: 2016-1-4 09:45
韦德460 发表于 2016-1-3 22:27
arr数组名是数组第一个元素的地址,&arr才是数组的地址

应该这样表述:数组名是数组首元素的地址,也相当于数组的地址
作者: ak13211    时间: 2016-1-4 11:12
看不懂。。。
作者: 小ㄟMò    时间: 2016-1-4 12:31
感觉蒙蒙哒,
作者: 海棠依旧2046    时间: 2016-1-4 12:38
二维数组中更绕,雾霾严重区,表示已经晕乎
作者: ydy2511000    时间: 2016-1-8 12:38
我感觉,arr里面存放的就是自己的地址。
也就是说 arr的值是自己的地址,所以&arr == arr
作者: 学以致用表初衷    时间: 2016-1-8 14:43
第二个。数组名就是地址。
我刚也做了一下这个题。我和你也有同样的答案。为什么不加&
这两个的运算结果是一样的。~我也不知道什么区别。自己学习 没有人问。你如果有答案请告诉我一下。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2