1.数组元素作函数的参数
当数组元素作为函数参数时,与普通变量作为函数参数的情况相同,都是值传递方式,即在函数调用时,将实参数组元素的值传递给形参变量。
【例8-4】求n个元素的整型数组中偶数的个数(数组元素作函数的参数)。
方法1:直接引用数组元素。
例8-4 运行视频
方法2:通过指针变量间接引用数组元素。
程序运行结果如图8-5所示。
图8-5 例8-4的运行结果
2.数组名作为函数参数
我们在数组一章介绍过,当数组名用作函数参数时,函数调用将改变形参数组元素的值,因此函数调用后实参数组元素的值也会随着改变。
在C语言中,调用函数采用的是“值传递”方式。当用变量作为函数参数时,传递的是变量的值;当用数组名作函数参数时,由于数组名代表的是数组的起始地址,因此传递的是数组的首地址,所以要求形参为指针变量。
在进行函数定义时,往往采用形参数组的形式,因为在C语言中用下标法和指针法都可以访问数组,但是应该明确一点,形参数组的本质就是一个指针变量,由此指针变量接收实参传递的数组首地址。对形参指针所指向的存储单元的操作,实际上就是对实参数组元素的操作。
【例8-5】编写函数将数组中的n个整数按相反顺序存放。
例8-5 运行视频
程序运行结果如8-6所示。(www.xing528.com)
图8-6 例8-5的运行结果
归纳起来,当数组名用作函数参数时,形参和实参的表示形式有以下4种情况。
1.形参和实参都用数组名。
2.实参用数组名,形参用指针变量。
3.形参和实参都用指针变量。
4.实参用指针变量,形参用数组名。
应该注意的是,如果用指针变量作实参,必须先使指针变量有确定的值,即使指针变量指向一个已经定义的数组。
以上4种方式实际上传递的是数组的首地址,是地址传递,属于地址传递方式,是双向传递。
【例8-6】编写函数,实现选择排序(用指针实现)。
例8-6 运行视频
程序运行结果如图8-7所示。
图8-7 例8-6的运行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。