scanf使用指针**变量**,而不是**变量本身**

Alg*_*bra 0 c

我正在阅读关于指针GNU C编程教程的 "GNU C编程"

它指出:

但是,scanf使用指向变量的指针,而不是变量本身.例如,以下代码从键盘读取整数:

int my_integer;
scanf ("%d", &my_integer);
Run Code Online (Sandbox Code Playgroud)

理解"变量"和"变量本身"令人困惑.
你能提供一些提示吗?

Dav*_*rtz 5

这是令人困惑的措辞.也许更明确的方式是scanf需要知道将它所读取的值放在何处.给它变量的当前值并没有任何好处(除非该变量包含你希望放置值的地址).

int my_integer;
scanf ("%d", &my_integer);
Run Code Online (Sandbox Code Playgroud)

这将传递到存储值scanf的地址my_integer.没有&,你将传递它的值my_integer,因为变量尚未初始化,所以它将是垃圾.

短语"不是变量本身"令人困惑.也许"不是值本身"会更有帮助,因为有时变量确实包含指向值存储位置的指针.