关于c语言中结构体的一点小问题
假设上面已经定义好了相关变量…………scanf("%d%s%f",&student1.num,student1.name,&student1.score);………………这...
假设上面已经定义好了相关变量
…………
scanf("%d %s %f",&student1.num,student1.name,&student1.score);
………………
这个"&"到底啥时候加,啥时候不加,有什么规则吗 展开
…………
scanf("%d %s %f",&student1.num,student1.name,&student1.score);
………………
这个"&"到底啥时候加,啥时候不加,有什么规则吗 展开
4个回答
展开全部
& 是求地址运算符,当需要用地址时,例如 整型变量名,浮点变量名已知时,需要用地址,则加它。
例子: 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 已是字符串首地址,不能再加 &。
例子: 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 已是字符串首地址,不能再加 &。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
除了char类型的数组和指针类型外,其它都需要加。假设m是结构体的一个成员,如果m是这样定义的:char m[数组长度]或类型 *m(假设已对m赋值,m已指向一个变量),则输入m时,不需要加&。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好!首先&是取地址符号,是取变量的地址,而字符串变量在内存中存放的直接是地址,所以不用加&符号,也就是%s对应的字符串变量。
而其他C语言中整型int,浮点型数float,double,字符char都需要用&符号。
而其他C语言中整型int,浮点型数float,double,字符char都需要用&符号。
追答
你的代码中,name这个结构体成员是字符串类型,所以不用加&号。
如果有不明白的地方或者其他问题可以追问我!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
南宋 辛弃疾
追问
老哥,你是打酱油的吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询