1
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 之前不需要 & 符号?(代码当前有效。)

4

2 回答 2

7

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

于 2012-05-09T17:54:19.933 回答
2

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

在这里,在函数中getnumsab是指针,所以它们已经包含地址,所以不需要写&来给出地址。

于 2012-05-09T18:40:00.873 回答