指针问题,简单,求教
- C/C++ code
#include <stdio.h>int main(void){ long num1 = 0L; long num2 = 0L; long *pnum = NULL; pnum =&num1;//把NUM1的地址复制给pnum *pnum = 2;// num1 =2; ++num2;//num2 ==2; num2+= *pnum; // num2 = num2+NUM1 ==4 pnum =&num2;//把num2的地址给pnum ++*pnum;//*pum==4, ++*pnum 为5 printf("\nnum1=%ld num2=%ld *pnum =%ld *pnum+num2 =%d\n",num1,num2,*pnum,*pnum+num2);//2 4 5 10 return 0;}实际运行结果
===================
num1=2 num2=4 *pnum =4 *pnum+num2 =8
Press any key to continue
===================
求高人指教
[解决办法]
++num2;//num2 ==2;num2 == 1;
[解决办法]
++num2;//num2 ==2; num2 == 1;
[解决办法]
#include <stdio.h>
int main(void)
{
long num1 = 0L;
long num2 = 0L;
long *pnum = NULL;
pnum =&num1;//把NUM1的地址复制给pnum
*pnum = 2;// num1 =2;
++num2;//num2 =1;
num2+= *pnum; // num2 = num2+NUM1 =3
pnum =&num2;//把num2的地址给pnum
++*pnum;//*pum=3, ++*pnum 为4,num2 = 4
printf("\nnum1=%ld num2=%ld *pnum =%ld *pnum+num2 =%d\n",num1,num2,*pnum,*pnum+num2);
//2 4 4 8
return 0;
}
[解决办法]
long num2 = 0L;
++num2;//num2 ==2;
num2的初始值为0,执行一次++,就变成2了?这个时候的num2应该为3
运行结果应该是正确的,后来将num2的地址付给pnum,*pnum又执行路一次++操作;
所以*pnum和num2的值都为4