C语言中的问题

[复制链接]
查看11 | 回复5 | 2011-12-3 12:55:57 | 显示全部楼层 |阅读模式
int a[4]={1,2,3,4},y;int *pa=a;
y=*pa++; /**pa++表示这次使用的值为*pa(赋予给y),下次使用*pa时变成*pa+1了*/
printf("y=%d\n*pa++=%d\n",y,*pa);/*y为*pa赋予的值﹐已经固定了﹐*pa现在再次被使用所以现在的*pa=*pa+1*/运行结果应该是﹕y=1
*pa++=2PS:看来楼主对i++与++i还不理解﹐多看看相关资料吧﹗...
回复

使用道具 举报

千问 | 2011-12-3 12:55:57 | 显示全部楼层
*pa++先取 *pa的值,pa再自增1,y = *pa++ 就是 y = *pa; pa++;这是 y等于1,pa指向2。 printf("y=%d\n",y); 打印1.2,*pa++; 后pa指向2,printf("*pa++=%d\n",*pa++); 打印2, pa指向3....
回复

使用道具 举报

千问 | 2011-12-3 12:55:57 | 显示全部楼层
第二个多加了一次啊y=*pa++是先取pa所指地址的值赋给y,pa再指向下一个地址*pa++直接即是pa指向下一个,所以后一个输出是2...
回复

使用道具 举报

千问 | 2011-12-3 12:55:57 | 显示全部楼层



回复

使用道具 举报

千问 | 2011-12-3 12:55:57 | 显示全部楼层
printf("*pa++=%d\n",*pa++);改成 printf("*pa++=%d\n",*pa);就一样了...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行