按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
变量的数组元素的类型也和函数形参变量的类型是一致的。因此,并不要求函数的
形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。用数组名
作函数参数时,则要求形参和相对应的实参都必须是类型相同的数组,都必须有明
确的数组说明。当形参和实参二者不一致时,即会发生错误。
2) 在普通变量或下标变量作函数参数时,形参变量和实参变量是由编译系统分配的两
个不同的内存单元。在函数调用时发生的值传送是把实参变量的值赋予形参变量。
在用数组名作函数参数时,不是进行值的传送,即不是把实参数组的每一个元素的
值都赋予形参数组的各个元素。因为实际上形参数组并不存在,编译系统不为形参
数组分配内存。那么,数据的传送是如何实现的呢?在我们曾介绍过,数组名就是
数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送,也就是
说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于
有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空
间。
上图说明了这种情形。图中设 a 为实参数组,类型为整型。a 占有以 2000 为首地
址的一块内存区。b 为形参数组名。当发生函数调用时,进行地址传送,把实参数
组 a 的首地址传送给形参数组名 b,于是 b 也取得该地址 2000。于是 a,b 两数组
共同占有以 2000 为首地址的一段连续内存单元。从图中还可以看出 a 和 b 下标相
同的元素实际上也占相同的两个内存单元(整型数组每个元素占二字节)。例如 a'0'
和 b'0'都占用 2000 和 2001 单元,当然 a'0'等于 b'0'。类推则有 a'i'等于 b'i'。
【例 8。8】数组 a 中存放了一个学生 5 门课程的成绩,求平均成绩。
float aver(float a'5')
{
int i;
float av;s=a'0';
for(i=1;i