为何C语言代码中变量a的输出结果为40?
为什么变量a的输出结果是40?
先看给出的C代码:
int a; int *p=&a; a = 20; *p = 40; printf("%d",a);
输出结果为40,具体原因拆解如下:
int a;:声明了一个整型变量a,系统为它分配了一块内存空间,但此时里面的值未定义。int *p=&a;:声明了一个整型指针变量p,&a是取地址运算符,用来获取变量a的内存地址,这行代码把a的地址赋值给p,意味着p现在指向了a所在的内存空间。a = 20;:直接给变量a赋值20,此时a的内存里存储的值变成了20。*p = 40;:*在这里是解引用运算符,作用是访问指针p指向的内存空间中的值。因为p指向的就是a的内存,所以这行代码本质上就是修改a所在内存里的值,把之前的20替换成了40。printf("%d",a);:打印变量a的值,此时a已经被修改为40,所以最终输出40。
内容的提问来源于stack exchange,提问作者Balaji Varma
相关产品推荐
相关产品推荐

