为什么我不需要带扫描的&符号? (在C中)

void getnums(int *a, int *b); int main() { int a; int b; int c; getnums(&a,&b); c = a + b; printf("a + b = %d\n", c); return 0; } void getnums(int *a, int *b) { printf("a:? "); scanf("%d", a); printf("b:? "); scanf("%d", b); } 

为什么我不需要在scanfs中的a和b之前使用&符号? (该代码目前有效。)

因为scanf将指针作为其参数(以便它知道要修改的变量),并且ab已经是指针。

每当我们scan一些输入时,它需要一个存储位置(即地址)来存储该值,对于我们必须使用的简单变量& – &符号 – 来提供该地址。

在函数getnumsab是指针,因此它们已经包含地址,因此不需要写&来提供地址。