Во-первых, о вашем C:
Если вы определяете всю функцию над main (), вам не нужно включать ее прототип перед ней.Итак, удалите 2-ю строку:
void foo(int *x, int *y);
Теперь, для реальной ситуации, подойдет карта псевдопамяти:
a b
--------------
| 5 | 6 | <- data
--------------
[1000] [1004] <- address
x y
----------------
| 1000 | 1004 | <- data
----------------
[2000] [2004] <- address
Итак,вы получите:
a = 1000 b = 1004 (the addresses of a & b)
x = 2000 y = 2004 (the addresses of x & y)
Если вы хотите:
x = 1000 y = 1004
Тип,
printf("x = %p\ny = %p\n", x, y);
, как это видно из карты памяти выше.