c语言的指针 搞不懂结果

#include<stdio.h>
int main()

int a=1,b=2;
int p=&a;
a=b;
printf(“%d,%d,%d”,a,b,
p);

结果为什么是2 2 2 而不是2 2 1 呢

p相当于a的别名,这样就好理解了

因为 p=&a; 使p指向a的地址,a的地址存的值就是p指向的值,a=b后,a=2后,地址不变,但值变了,p还是指向a,所以p指向的值也是2

因为 p=&a; p指向a的地址,a的地址存的值就是p指向的值,a=b后,a=2后,地址不变,但值变了,p还是指向a,所以p指向的值也是2,请采纳谢谢

printf("%d,%d,%d",a,b,p); 实际打印的是p指向的地址的十进制值,
如果要打印出2 2 2的话,因该用printf("%d,%d,%d",a,b,p); //p前面有个,貌似在这里看不到,变成斜体了
指针加一个,才是获取指针所指向地址的值,没加就是指针所指向的地址