c语言编程输入时为什么一维数组要加地址符,字符数组就不用呢

 我来答
娱乐小八卦啊a
高粉答主

2020-05-10 · 娱乐小八卦,天天都知道
娱乐小八卦啊a
采纳数:256 获赞数:117852

向TA提问 私信TA
展开全部

因为字符数组,数组名本身就是指一个地址。

定义了字符型数组char name[10]。name有两个含义:一个是代表着name这个数组第一个位置的地址,也就是name[0]的地址。可以说name就等价于&name[0]。

还有一种意思就是指代name整个数组。&name 就是整个数组的首地址。所以name和&name取得的地址是相同的。

扩展资料

name和&name区别:

不同点在于:name+1表示的是数组第二个元素的地址,而&name+1表示的是整个数组后又一个name数组的首地址,即&name[10]后一个新的name数组的首地址。例如:

#include<stdio.h>

int main(void)

{

    char name[10]={"hello csdn"};

    printf("name+1的地址:%p\n",name+1);

    printf("&name+1的地址:%p\n",&name+1);

    return 0;

}

所以说scanf("%s",name);和scanf("%s",&name);执行后的结果是一样的,都是name的首地址,都是给字符数组name赋值。推荐用 scanf("%s",name); ,第二种不容易理解也容易犯错,有些编译软件也不支持会报错。

吉祥二进制
高粉答主

推荐于2016-07-13 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84579

向TA提问 私信TA
展开全部

  在C语言中,数组的名字本身就是一个指针即为起始地址,字符数组也是一样的。比如

int a[2] = {1,2};
int *p = a; //a本身就是一个指针,它表示数组的起始地址。
char str[20] = "hello";
char *pstr = str; //str本身就是一个指针,它表示数组的起始地址

  数组的名字,等同于第一个元素的地址。以上面数组a和str为例,a本身是个地址,它等同于&a[0]获取的地址。str等同于&str[0]。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terranlong
2012-08-10 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3994万
展开全部
数组其实就是个地址,它保存的是数组第一个元素的地址
char str[100];
str 其实就是 &str[0]
因此 scanf("%s", str); 也可以写成 scanf("%s", &str[0]);
追问
嗯,我刚试了下确实都可以不加,只是以这个str[i]形式输入时就必须加&了是吧?
#include
void main()
{
char a[5];
scanf("%c",a);//格式控制符是%c和%s结果是一样的,为什么啊?
printf("%c",a[0]);
}
还有数组名既然代表的既然是首地址,为什么只输数组名就能输入整个数组元素呢?
追答
str[i]  是char类型的,当然要取它的地址

#include
void main()
{
char a[5];
scanf("%c",a); // %c只能格式化一个字符,也就是赋值给a[0],你输入后面的都不会保存到a[0]后面的元素
printf("%c",a[0]); // 这里打印的就是a[0]
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hhxiaopan
2012-08-10
知道答主
回答量:5
采纳率:0%
帮助的人:3.3万
展开全部
都要加的 例如
char a[3];
int b[3];
int i=0;
for(i=0;i<3;i++)
{
scanf("%c",&a[i]);
scanf("%d",&b[i]);
}

输入的后一个参数为地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-07-02
展开全部

#include <stdio.h>
main()
{
int i,a[20],sum,count;
sum=count=0;
for(i=0;i<20;i++)
scanf("%d",&a[i]);

}   这个是一维数组输入要用的。二维函数有时候也要,有时候却不用,我也不清楚。

你可以参考这个

网页链接

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式