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

Sha*_*mar 1 c pointers function scanf ampersand

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);
}
Run Code Online (Sandbox Code Playgroud)

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

Oli*_*rth 7

由于scanf采用指针作为它的参数(以便它知道什么变量修改),并且ab已经指针.