我有这个代码:
char str [80];
int i;
printf ("Enter your family name: ");
scanf ("%79s",str);
printf ("Enter your age: ");
scanf ("%d",&i);
为什么 string
的 scanf()
保存到 str
而 int
正在发送到 i 的指针
?
最佳答案
scanf
需要传递变量的地址才能修改它。
将数组(在本例中为 char
数组)传递给函数时,数组会衰减为指向第一个元素的指针。
因此,为 %s
说明符传递 str
在功能上与传递 &str[0]
相同。
这也适用于指向动态分配内存的 char *
:
char *str = malloc(80);
scanf ("%79s",str);
关于c - 为什么将字符串的 scanf 保存到 str 而将 int 发送到 i 的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34820712/