【发布时间】:2015-07-19 17:50:44
【问题描述】:
代码 1
main()
{
int i ,a[5];
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
yo(a);
for(i=0;i<5;i++)
{
printf("%d ",a[i]);
}
}
void yo(int a[5])
{
int i;
for(i=0;i<5;i++)
{
a[i]=a[i]+1;
}
}
在没有返回值的上述代码中(我在函数中返回 void 数据类型),数组“a”在主函数中得到更新,但是当我不使用数组并使用普通 int 数据类型时,值会“ nt得到更新见代码2
main()
{
int a;
a=50;
yo(a);
printf("%d",a);
}
void yo(int z)
{
z=150;
}
【问题讨论】:
-
@ryyker “工作”是一个相对术语。都没有崩溃。 OP本质上是在询问传递数组和非数组之间的区别,以及为什么前者似乎是按地址传递,而后者显然是按值传递。这也是任何decent book on the C language 和上千个教程网站中的任何一个都详细介绍的内容。
-
@ryyker 有或没有适当的原型,
main()中的a的值在代码2 中执行和返回yo()时不更新。我同意你的观点,无论如何都需要适当的原型设计。 -
@WhozCraig - 我的错。我刚刚重新检查了。你是对的。