C语言首地址问题

假设scanf("%d",&a[i]);输入首地址&a[i]是首地址。a也是首地址。a=&a[i]但是为什么scanf("%d",&a);会出错是否要去掉取地址符,还是加... 假设scanf("%d",&a[i]);输入首地址
&a[i]是首地址。 a也是首地址。a=&a[i]
但是为什么scanf("%d",&a);会出错
是否要去掉取地址符,还是加上指针变量
展开
 我来答
451006071
2018-03-28 · TA获得超过1332个赞
知道小有建树答主
回答量:368
采纳率:57%
帮助的人:330万
展开全部
数组的首地址就是数组名, a[i]表示数组第i个元素对应的值, &a[i]表示取数组第i个元素的“位置”也就是地址。只有a才是首地址,&a[i]是说取数组第i个元素的地址,他是地址但不是数组的首地址喔。我们说的首地址是数组首个元素的地址,因为a等价于a+0等价于&a[0],因此a才是数组首元素的地址。
scanf("%d", &a)就表示了取地址的地址,变成了所谓的“二级”地址。 a和a+0等价,也就和&a[0]等价,表示取数组第0个元素的地址,注意它是一级地址,所以不报错。当然你可能不知道什么是一级地址,二级地址。如果“地址”前面添加&表示取地址的地址,你可以简单认为是个二级地址。因为学到指针变量时,会出现多级指针,数组指针等变态用法。学到后面你就知道了。
正确的写法是:
scanf("%d", a );
scanf("%d", &a[i])
钺琴轩02J
2018-03-28 · TA获得超过602个赞
知道小有建树答主
回答量:609
采纳率:87%
帮助的人:146万
展开全部
可以理解成内存就是一个大宾馆,里面的房间都有门牌号,这个门牌号就是地址的值,房间就是一个空间(空间多大呢?比如int的可以用sizeof(int)来算)。 这个地址是有值得,用十六进制来表示&x(hex)。或者%p打印地址。 数组的(首)地址就是数组...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式