C指针 - 不同的地址

cno*_*oob 0 c pointers memory-address

我正在尝试学习C指针,但我无法理解某些东西......以下代码:

#include <stdio.h>

void foo(int *x, int *y);

void foo(int *x, int *y) {
    printf("x = %p\ny = %p\n", &x, &y);
    *x = 5;
    *y = 6;
}

int main(void) {
    int a, b;
    printf("a = %p\nb = %p\n", &a, &b);
    foo(&a, &b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么地址不同?第一个printf(主)输出两个地址.另一个printf(foo)输出不同的地址.我将地址传递给foo(&operator).

Mar*_*off 8

main,你打印的地址xy,但foo,你打印的地址指针,以xy.你打算写:

printf("x = %p\ny = %p\n", x, y);
Run Code Online (Sandbox Code Playgroud)

(注意&之前的缺乏xy)