文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
5.2.1 数组元素作为函数参数
数组在定义时就确定了数组元素的数据类型,用户可以通过下标轻松地访问数组元素,并将数组元素像具有相同数据类型的变量一样来使用,包括将它作为函数调用的实际参数。
下面在主函数中定义一个长度为 5 的 int 类型的数组 a,并对其进行初始化:
int a[5] = {1, 2, 3, 4, 5};
然后再定义一个函数 printElement:
该函数无返回值,并且只有一个 int 类型、名字为 e 的参数。在函数体中,首先通过乘号复合赋值运算符,将参数值扩大 10 倍,然后通过 printf 函数调用语句将这个参数值打印在窗口上。注意,在参数值后面还有一个空格。
最后,我们在主函数里通过 for 循环语句遍历数组,并将数组元素作为参数调用 printElement 函数:
for(int i = 0; i < 5; ++i) printElement(a[i]);
编译运行这个程序,它会在窗口上打印出如下结果:
10 20 30 40 50
对于这样的输出结果,大家应该没有什么疑问。但是需要大家考虑的是,数组中的元素值改变了吗?是否被扩大了 10 倍?
C 语言中,函数在调用时,实参与形参之间是采用值传递的形式进行传递的,即将实参的值复制一份给形参。虽然初始时形参会具有和实参相同的值,但由于实参与形参各自都有自己单独的内存空间,所以不管形参的值如何改变,都不会影响实参的值。
因此,数组中各元素仍保持着原来的值,不会被扩大 10 倍。想要验证也很简单,大家可以利用循环,将所有的数组元素重新打印一遍。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论