| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 390 人关注过本帖
标题:很新很新的 菜鸟!!!
只看楼主 加入收藏
wwhwhj0121
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-6-26
结帖率:0
收藏
已结贴  问题点数:2 回复次数:4 
很新很新的 菜鸟!!!
以下程序运行结果是:   
x =
0
1
2
3
#include <stdio.h>
void fun1(int x)
{
    x=20;
}
void fun2(int b[4])
{
    int  j;
    for(j=0; j<4; j++)
   {
       b[j]=j;
   }
}
main()
{
    int x = 10;
    int  a[4] = {1,2,3,4}, k;
    fun1(x);
    printf("x = %d\n", x);
    fun2(a);
    for(k=0; k<4; k++)
    {
        printf("%d\n", a[k]);
    }
}


求个详尽解答,谢谢
2010-06-26 16:50
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:1 
你的输出结果是由主函数的最后一个循环语句输出的。
你调用了fun2(int b[4])
这个函数的形参是数组,这个数组和主函数的数组a用的是同一个内存空间,
所以你在fun2的修改就相当于对数组a的修改。
这样输出结果就没有什么问题了吧。

南国利剑
2010-06-26 17:29
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:0 
你是新来的吧。
欢迎你的到来。

南国利剑
2010-06-26 17:30
caimingseed
Rank: 1
等 级:新手上路
帖 子:3
专家分:3
注 册:2010-6-27
收藏
得分:1 
x = 10
0
1
2
3
你的问题应该是为什么调用函数后,x的值没有变,而数组的值a[4]发生了变化。
因为在调用第一个函数时,系统是把x的值传给函数fun1(int x)中的x,原来的x的值不变。
在调用第二个函数时,系统把a[4]每个元素的地址传给fun2()函数中,
所以在主函数输出数组时才会发生变化的
2010-06-27 14:41
zgxyz2008
Rank: 4
等 级:业余侠客
帖 子:67
专家分:202
注 册:2008-10-28
收藏
得分:1 
X是值传递,而数组才作参数时会被转化为指针类型....
2010-06-27 21:44
快速回复:很新很新的 菜鸟!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016730 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved