这是因为C中函数的值是按值传递的.当然,作为变量的编译语言名称在运行时不存在,它是内存中的所有地址.
如果直接传递变量,只需传递值,这是printf()需要的:
int a = 32;
printf("a=%d\n", a);
Run Code Online (Sandbox Code Playgroud)
但如果你用scanf()', it would just get the integer value32 执行相同的, with no idea where it came from. Since the point of扫描()`是要改变调用者变量的值,你传递变量的地址:
int a = 32;
scanf("%d", &a);
Run Code Online (Sandbox Code Playgroud)
然后里面的代码scanf()可以在给定的地址写一个新的整数值,这会导致值改变a.