关于c语言中结构体的一点小问题

假设上面已经定义好了相关变量…………scanf("%d%s%f",&student1.num,student1.name,&student1.score);………………这... 假设上面已经定义好了相关变量
…………
scanf("%d %s %f",&student1.num,student1.name,&student1.score);
………………

这个"&"到底啥时候加,啥时候不加,有什么规则吗
展开
 我来答
金色潜鸟
2018-12-10 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5478万
展开全部
& 是求地址运算符,当需要用地址时,例如 整型变量名,浮点变量名已知时,需要用地址,则加它。
例子: int num; float score; double exp; 输入格式 %d %f %lf:
scanf(" %d %f %lf",&num, &score, &exp);
例子: int num[5]; float score[5]; double exp[5]; 输入一个数组元素i,格式 %d %f %lf:
i=3;
scanf("%d %f %lf",&num[i], &score[i], &exp[i]);
注意,字符数组,输入字符串时用格式 %s,数组名就是数组首地址,这时不加 &:
char str[80]; scanf("%s" , str); 拍入 good_string, str 获得 "good_string"(双引号)
注意,字符数组,输入字符串时用格式 %c, 输入一个数组元素 加 &:
char str[80]; i=0; scanf("%c", &str[i]); 拍入 A, str[i] 获得 字符常量 'A' (单引号)。
你的 &student1.num,student1.name,&student1.score 这里成员name 是 char 数组,student1.name 已是字符串首地址,不能再加 &。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
microroom
科技发烧友

2018-12-10 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1497万
展开全部
除了char类型的数组和指针类型外,其它都需要加。假设m是结构体的一个成员,如果m是这样定义的:char m[数组长度]或类型 *m(假设已对m赋值,m已指向一个变量),则输入m时,不需要加&。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zdw19981101
2018-12-10 · TA获得超过1242个赞
知道小有建树答主
回答量:270
采纳率:75%
帮助的人:16.1万
展开全部
你好!首先&是取地址符号,是取变量的地址,而字符串变量在内存中存放的直接是地址,所以不用加&符号,也就是%s对应的字符串变量。
而其他C语言中整型int,浮点型数float,double,字符char都需要用&符号。
追答
你的代码中,name这个结构体成员是字符串类型,所以不用加&号。
如果有不明白的地方或者其他问题可以追问我!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yi...t@163.com
2018-12-10 · 超过16用户采纳过TA的回答
知道答主
回答量:102
采纳率:33%
帮助的人:31.2万
展开全部
南宋 辛弃疾
追问
老哥,你是打酱油的吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式