为什么我不需要带扫描的&符号? (在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
将指针作为其参数(以便它知道要修改的变量),并且a
和b
已经是指针。
每当我们scan
一些输入时,它需要一个存储位置(即地址)来存储该值,对于我们必须使用的简单变量&
– &符号 – 来提供该地址。
在函数getnums
, a
和b
是指针,因此它们已经包含地址,因此不需要写&
来提供地址。