一道有关C语言的试题。。懂的帮忙答一下。。

[复制链接]
查看11 | 回复2 | 2009-6-23 14:49:24 | 显示全部楼层 |阅读模式
帮忙讲一下下面的题,为什么会显示那些数啊???
int y = 888;
main( )
{int y=8;
f1(y) ; printf( “1. y=%d\t” , y);
f2(&y); printf( “2. y=%d\t” , y);
f3( );
}
f1( int y ) { y = 0; }
f2( int * y ) { *y = 88; }
f3( ) { printf(“3.y=%d”,y); }
执行后屏幕上的显示值为:1. y=8
2. y= 88
3. y=888。

回复

使用道具 举报

千问 | 2009-6-23 14:49:24 | 显示全部楼层
第一个1. y=8 是f1(y) ; printf( “1. y=%d\t” , y); 的结果,f1(y)是把y作为参数调用函数的并没有返回值,所以y还是=8第二个 2. y= 88 f2(&y); 把y的地址作为参数调用,虽然没有返回值,*y = 88;使得 y=88第三3. y=888。中没有函数参数,在main函数以外用到变量y的时候就用int y = 888; 了 所以y=888...
回复

使用道具 举报

千问 | 2009-6-23 14:49:24 | 显示全部楼层
1. 传值,故更改的值只在函数内有效。2. 传址,故更改的值只在函数内外均有效。3. 对于函数f3而言,只有全局变量int y=888可见,故输出888....
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行