这是有效的C扫描吗?

man*_*nja 2 c

我知道scanf需要一个地址,但这有用吗?

int val;
int *valP = &val;
scanf("%d", valP);
Run Code Online (Sandbox Code Playgroud)

我的书只显示

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

有效吗?

Cal*_*leb 8

是的,它是有效的.

scanf()期望一个指针可以写入一个整数(好,一个指向适当数据类型的指针,具体取决于你在格式字符串中描述的内容)(非const).只要它指向有效的内存并且是可写的,那么你是如何设计指针并不重要的.

在您偏离本书时,您已经介绍了将指针存储在变量中并将该变量传入的中间步骤,但是否则语义完全不变.