【发布时间】:2016-09-15 17:58:07
【问题描述】:
我想了解这部分代码是如何工作的
#include<stdio.h>
int main(){
int a,b;
int *ptr1,*ptr2;
a=5;
b=a;
ptr1=&a;
ptr2=ptr1;
b=(*ptr2)++;
printf("a = %d, b=%d,*ptr1=%d,*ptr2=%d\n",a,b,*ptr1,*ptr2);
}
输出是
a = 6 , b = 5 , *ptr1 = 6 , *ptr2 = 6.
我需要理解谢谢
【问题讨论】:
-
理解这一点的关键是
b=(*ptr2)++;,它获取ptr2所指向的内容,并在访问其值之后对其进行递增。 -
但是 b 的值为 5 并且没有改变?为什么?
-
@blitz 了解
x++和++x之间的区别。 -
因为
b = (*ptr2)++;基本上是b = *ptr2; (*ptr2)++;或者在这种情况下b = a; a++;阅读后增量运算符。 -
流程如下: 1)
(*ptr2)访问ptr2指向的值; 2)b设置为该值; 3) 由于您有后增量,afterb设置为 5,然后ptr2指向的值增加 1,现在为 6 . 如果您改为使用++(*ptr2),则该值将被访问、递增、然后分配给b
标签: c