C语言关于一维数组做实参的问题

#include<stdio.h>voidEvaluate(intiArrayName[10]);voidDisplay(intiArrayName[10]);intma... #include<stdio.h>void Evaluate(int iArrayName[10]);void Display(int iArrayName[10]);int main(){ int iArray[10]; Evaluate(iArray[10]); Display(iArray[10]); return 0;}void Display(int iArrayName[10]){ int i; for(i=0;i<10;i++) { printf("the member number is%d\n",iArrayName[i]); }}void Evaluate(int iArrayName[10]){ int i; for(i=0;i<10;i++) { iArrayName[i]=i; }}首先,为啥声明和定义函数的时候里面的形参数组的长度,任意修改都不会影响运行结果。声明函数的时候形参去掉整个中括号也不影响运行结果。但是定义的时候去掉中括号就报错了。还有main主函数里面的调用其他两个函数的时候实参传递的iArray[10]不是代表一个元素吗,数组元素做实参传递的不应该是值吗,既然传递的是元素的值那么在void函数体中iArrayName数组的值发生了变化,不是不影上面的实参的吗,为啥实参的值也发生了变化。 我是自学的,然后这些都是我的个人理解,请大佬帮忙纠正~~~ 展开
 我来答
Yuqi_Tan

2018-11-29 · TA获得超过8.9万个赞
知道大有可为答主
回答量:9918
采纳率:93%
帮助的人:3425万
展开全部
参数的两种形式:
1、传值:形参只是实参的一个副本,它只存在被调函数中,在被调函数中对形参的改变不会影响实参的值。
2、传址:形参是实参的一个地址,在被调函数中对形参的改变会影响实参的值。
在c语言中,简单变量默认是传值,而数组默认是传址。
所以出现你所说的一系列怪现象。
好好想一下,若还不明白请留言。
更多追问追答
追问
我在main里调用那两个函数的时候,实参传iArray[10]不是传的数组的元素吗.
追答
不传数组元素。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式