c语言中,scanf里面要是数组要不要加&?

c语言中,scanf里面要是数组到底要不要加&,为什么我看到有的一维数组前有&,有的却没有?... c语言中,scanf里面要是数组到底要不要加&,为什么我看到有的一维数组前有&,有的却没有? 展开
 我来答
风沙凰
推荐于2017-10-31 · TA获得超过209个赞
知道答主
回答量:16
采纳率:0%
帮助的人:12.8万
展开全部
你要弄明白原理就明白了。
scanf传得必须是指针,也就是地址。
比如int a;就需要&a;
但是如果是数组,数组本身表示的是数组首元素的地址。也就是
int a[10];a就表示a[0]的地址;那a[3]的地址呢?可以这样,&a[3];这就是加&的数组,如果不加呢,可以这样(a+3)就可以了,a是a【0】的地址,那么a+3就是a[3]的地址。所以你要弄明白他的传入的到底是谁的地址,就可以了,加不加只是个实现方式不一样而已。
油菜花零
2012-08-26 · TA获得超过881个赞
知道小有建树答主
回答量:501
采纳率:50%
帮助的人:330万
展开全部
数组不要
加&表示地址
数组本身就是一个地址,所以没有必要再加了
有加的话应该是双地址,就是地址的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
197hugh
2012-08-26 · TA获得超过899个赞
知道小有建树答主
回答量:591
采纳率:0%
帮助的人:357万
展开全部
一楼解释的很好了。定义数组是不加。操作使用数组需要的时候加。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
real晓文
2012-08-26 · TA获得超过228个赞
知道小有建树答主
回答量:193
采纳率:0%
帮助的人:122万
展开全部
#include<stdio.h>
int main(){
int a[100];
int n,i;
scanf("%d",&n);//输入个数
for(i=0;i<n;i++)scanf("%d",&a[i]);//这里也可以用 scanf("%d",a+i);
for(i=n-1;i>0;i--)printf("%d ",a[i]);
printf("%d\n",a[i]);
}
上面是个例子,输入 n个数 逆序输出,对于数组的输入RT。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sudo987
2017-10-31
知道答主
回答量:1
采纳率:0%
帮助的人:920
展开全部
int a[2];
scanf("%d", &a);这种方法同样也可以把值放入int数组首元素中,因为数组自身地址=数组首元素地址,虽然看起来有点怪。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式