【发布时间】:2020-03-28 05:56:10
【问题描述】:
为什么我们在使用scanf函数时需要指定变量的地址而不是变量的名称例如:scanf("%d",&a);为什么我们使用&而不是我们可以这样写scanf("%d",a);所以为什么我们需要使用地址同时使用scanf()?
【问题讨论】:
-
因为 C 标准说
scanf需要一个 指针 来存储作为每个相应 转换说明符的参数> 在其格式字符串中。 C11 Standard - 7.21.6.2 The fscanf function(p2) 除非您正在填充数组(例如,使用"%s"-- 它会自动转换为指向第一个元素的指针),否则您需要提供变量的地址。 -
在 C 中,所有参数都是按值传递的。这意味着如果您传入
a,该函数将只获得a的值。这对函数没有用,因为它需要a的地址才能将值存储到a中。&正是运营商的地址。 -
这能回答你的问题吗? Why does scanf require &?
标签: c