读书人

指针有关问题简单求教

发布时间: 2012-03-24 14:00:46 作者: rapoo

指针问题,简单,求教

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

读书人网 >C语言

热点推荐