C中函数调用,数组的形参和实参与变量的实参和形参有什么不同
数组名做函数实参时,不是把数组元素的值传递给形参,而是把实参数组的首元素地址传递给形参数组,这样两个数组就共占同一个数组单元,但是书上说形参(注意书上说的是形参,如果说的...
数组名做函数实参时,不是把数组元素的值传递给形参,而是把实参数组的首元素地址传递给形参数组,这样两个数组就共占同一个数组单元,但是书上说形参(注意书上说的是形参,如果说的是实参我就没什么疑问了)数组中各元素的值如发生变化会使实参数组值同时发生变化,这一点是与变量作函数参数的情况是不同的,求大神解答!
展开
1个回答
展开全部
这是两种函数参数传递方法:
1,你开始学的是值传递,即形参把实参的值复制过去,他们根本上是两个不一样的变量,只是值相同而已,所以对形参的任何操作不影响实参。
2,数组名是数组首元素的地址,这是指针传递,把数组的地址传了过去,自定义函数拿到地址对数组进行操作,将影响这个数组。(注意这里没有复制,而是间接访问数组本身)
1,你开始学的是值传递,即形参把实参的值复制过去,他们根本上是两个不一样的变量,只是值相同而已,所以对形参的任何操作不影响实参。
2,数组名是数组首元素的地址,这是指针传递,把数组的地址传了过去,自定义函数拿到地址对数组进行操作,将影响这个数组。(注意这里没有复制,而是间接访问数组本身)
追问
自定义函数拿到地址对数组进行操作,将影响这个数组?请问是怎样产生影响,我还没看到指针那一章节。我问的问题其实按我的理解就是,数组形参变化,实参就变化,这是理解到的意思,也是我不明白的。
追答
主函数传过去的并不是整个数组,而是数组第一个元素的地址(数组名的含义),自定义函数得到的是地址而已,然后去操作这个地址里面的值。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询