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之前使用&符号? (该代码目前有效。)
答案 0 :(得分:7)
因为scanf
将指针作为其参数(以便它知道要修改的变量),并且a
和b
已经是指针。
答案 1 :(得分:2)
每当我们scan
某些输入时,它需要一个存储位置(即地址)来存储该值,对于简单变量,我们必须使用&
- &符号 - 来提供该地址。
此处,在函数getnums
中,a
和b
是指针,因此它们已经包含地址,因此无需编写&
来提供地址。