C:为什么没有&for scanf()函数中的字符串?

tar*_*ish 4 c string scanf

可能重复:
为什么scanf不需要字符串的&符号,并且在printf(在C中)也可以正常工作?

在C中,当我们使用scanf()函数来获取用户输入时,我们总是&在变量之前使用符号.例如:

  scanf("%d", &number);
  scanf("%c", &letter);
Run Code Online (Sandbox Code Playgroud)

这可确保我们的输入存储在适当的地址中.但是在字符串的情况下我们不使用&.

这是为什么?

SLa*_*aks 13

C中的"字符串"是字符缓冲区的地址.
您希望scanf填充缓冲区中的内存,该内容由变量指向.

相反,a int是一块内存,而不是一个地址.为了scanf填充该内存,您需要传递其地址.