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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韦德460 中级黑马   /  2015-12-29 01:11  /  2803 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int arr[3] = {1,2,3};
printf("arr = %p",arr);
printf("&arr = %p",&arr);

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

求大牛解答

19 个回复

倒序浏览
回复 使用道具 举报
个人认为arr就是首元素地址,arr也是数组名。&arr的话 还是相当于取的数组首元素地址。
回复 使用道具 举报
我也是刚学完数组和指针, 我的理解错的可能性很大。 有正确答案的话 也请告诉我一下
回复 使用道具 举报
15931110616 发表于 2015-12-29 13:56
我也是刚学完数组和指针, 我的理解错的可能性很大。 有正确答案的话 也请告诉我一下 ...

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

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

arr  是常量吧? 定义之后就是常量。所以才这样。
回复 使用道具 举报
15931110616 发表于 2015-12-30 13:18
arr  是常量吧? 定义之后就是常量。所以才这样。

主要是因为数组是构造类型,所以才这样
回复 使用道具 举报
arr本来就是数组的首地址,&arr是啥玩意就不懂了
回复 使用道具 举报
Manli123 发表于 2015-12-30 18:12
arr本来就是数组的首地址,&arr是啥玩意就不懂了

对一维数组来说,arr是数组第一个元素的地址,&arr是整个数组的地址
对二维数组来说,arr是数组第一行的地址,&arr是整个数组的地址
回复 使用道具 举报
数组名就是地址
回复 使用道具 举报
&arr是数组地址,arr是数组第一个元素的地址
回复 使用道具 举报
arr是数组名,数组名就是首地址
回复 使用道具 举报
arr数组名就是数组的地址,也是str[0]地址。
回复 使用道具 举报
HHE_johnson 发表于 2016-1-3 16:05
arr数组名就是数组的地址,也是str[0]地址。

arr数组名是数组第一个元素的地址,&arr才是数组的地址
回复 使用道具 举报
韦德460 发表于 2016-1-3 22:27
arr数组名是数组第一个元素的地址,&arr才是数组的地址

应该这样表述:数组名是数组首元素的地址,也相当于数组的地址
回复 使用道具 举报
看不懂。。。
回复 使用道具 举报
小ㄟMò 来自手机 中级黑马 2016-1-4 12:31:46
17#
感觉蒙蒙哒,
回复 使用道具 举报
海棠依旧2046 来自手机 中级黑马 2016-1-4 12:38:29
18#
二维数组中更绕,雾霾严重区,表示已经晕乎
回复 使用道具 举报
我感觉,arr里面存放的就是自己的地址。
也就是说 arr的值是自己的地址,所以&arr == arr
回复 使用道具 举报
第二个。数组名就是地址。
我刚也做了一下这个题。我和你也有同样的答案。为什么不加&
这两个的运算结果是一样的。~我也不知道什么区别。自己学习 没有人问。你如果有答案请告诉我一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马