标题:很新很新的 菜鸟!!!
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-311336-1-1.html




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

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