C语言指针代码运行结果解析:为何输出1和12?
C语言代码功能分析与疑问解答
先看完整代码:
int main() { int var1,var2, *ptr; ptr=&var1; var2=12; *ptr=var2; var1=var1/ *ptr; printf("%d %d", var1,var2); }
你的理解完全正确,下面逐行拆解关键步骤:
int var1,var2, *ptr;:声明两个整型变量var1、var2,以及一个指向整型的指针ptr。ptr=&var1;:将var1的内存地址赋值给ptr,此时ptr的指向目标是var1。var2=12;:给var2赋值为12。*ptr=var2;:这里的*是指针解引用运算符,作用是访问指针指向的内存空间中的值。因为ptr指向var1,所以这行等价于var1=var2,执行后var1的值变为12。var1=var1/ *ptr;:此时var1的值是12,*ptr依然指向var1,所以*ptr的值也是12。计算12/12得到1,再赋值给var1,此时var1的值更新为1。printf("%d %d", var1,var2);:输出var1(1)和var2(12),也就是你看到的运行结果。
内容的提问来源于stack exchange,提问作者Leandro Zárate
相关产品推荐
相关产品推荐

