一个c语言的问题,我看了好长时间都看不懂,结果是(1)166(2)266 麻烦给详细解释下

[复制链接]
查看11 | 回复5 | 2013-1-24 17:06:41 | 显示全部楼层 |阅读模式
这代码考察指针和变量的作用域 记不太清楚了 大致情况是:p=&b 说明p指向b的存储空间,而且p、b统一,就是一个地址,两个名字。一个值变了,另一个也变。然后pp函数形参4和2*p=*b+c即p指向的地址赋值为*b也就是2 ,又因为c=4所以*p=6 同时*b=6a=*p-c 也就是2 (2)输出a=2 *b=6 *p=6因为引用赋值 所以值不会变(1)输出b=6 *p=6 而a是整形,作用域不包括pp函数 所以值是不变的 a=1注意:虽然pp和main都有变量a但是两者不同...
回复

使用道具 举报

千问 | 2013-1-24 17:06:41 | 显示全部楼层
1,先执行“ pp(a+c,&b);”输出一个结果, printf("(2)%d%d%dn",a,*b,*p);条件格式输出,显然a=*p-c,即a=*p-4.其中*p=*b+c,即2+4=6,所以a=6-4=2,*b=...貌似不对,建议自己调试一下,看看。...
回复

使用道具 举报

千问 | 2013-1-24 17:06:41 | 显示全部楼层
#include
pp(int a,int *b);
main()
{
int a=1,b=2,c=3;
pp(a+c,&b);
printf("(1)%d%d%dn",a,b,b);
}pp(int a,int *b){int c=...
回复

使用道具 举报

千问 | 2013-1-24 17:06:41 | 显示全部楼层
很简单先算函数内的*p=b+c 等价*p =2+4=6a=*p-c=6-4=2输出2,6,6主函数输出1,6,6b发送的是地址...
回复

使用道具 举报

千问 | 2013-1-24 17:06:41 | 显示全部楼层
是先输出(2) 266再输出(1) 166 吧......
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行