![](/img/trans.png)
[英]Why do we need the address-of operator (ampersand, &) when passing a variable to scanf, but not when assigning to it?
[英]Why we need to specify address of variable and not name of variable while using scanf function
为什么我们在使用 scanf 函数时需要指定变量的地址而不是变量的名称,例如: scanf("%d",&a);
为什么我们使用 & 代替我们可以这样写scanf("%d",a);
那么为什么我们需要在使用scanf()
使用 address 呢?
scanf
在所有情况下都隐含地需要一个地址,因为您将作为输入的变量必须存储在内存中的某处,并且使用&variable_name
分配一个指向变量位置的指针。
在数组/字符串的情况下,您可以不使用&
因为传递的数组/字符串实际上是指向存储第一个值/字符的位置的指针。 (从那里您可以使用指针算法对其进行迭代,例如:+4 表示 int)
以上答案和评论为您提供了技术原因,但在外行方面
所以你的问题基本上是为什么scanf
不能只取变量名而不是地址。
您使用scanf()
将某些内容放入变量中,对吗?
现在让我们假设你想投递一封信,你能通过提供这个人的名字来投递吗? 不
你需要在上面写上地址,然后邮递员就会到达那个地址,邮递员不需要知道收件人的名字,他只需要知道地址。
您的scanf
就像邮递员一样,它需要内存位置的地址才能将该值传递给您想要的变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.