·C语言的结构体输入问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 02:41:41
scanf("%s",student.name); name是字符数组名,前面不需要加 & 吗??
问题补充:数组也是地址对吗?但是有的一维、二维数组用scanf时都要加 &

不懂再问我

不要加

数组名即为地址。

不用加的是输入字串的时候
比如
char a[10];
这个不用加
scanf("%s",a);

如果是char b[10][10];
这个也不用加
scanf("%s",b[i]);//第i个字串

如果是只读一个字符
scanf("%c", &a[i]);这个就要加,因为它是以一个字符的身份出现的,不是字串

数组名是一个“固定”的地址,
scanf是要根据用户指定的地址将输入的值去存入以该地址开始连续的内存中,所以,哪怕你的定义的name[3],但是,你输入的字符串是abcdef,超过了3,它也会执行,只是def没被存入罢了……