数组用作函数参数有两种形式:
一种是把数组元素(下标变量)作为实参使用;
一种是把数组名作为函数的形参和实参使用。
数组元素就是下标变量,它与普通变量并无区别。 因此它作为函数实参使用与普通变量是完全相[size=11.000000pt]同的,在发生函数调用时,把作为实参的数组元素的值传送给形参,实现单向的值传送。
[size=11.000000pt]用数组名作函数参数与用数组元素作实参有几点不同
1[size=11.000000pt])用数组元素作函数参数不要求形参也必须是数组元素,但是用数组名作函数参数时,则要求形参和相对应的实参都必须是类型相同的数组
2)在C语言中,数组名除作为变量的标识符之外,数组名还代表了该数组在内存中的起始地址,因此,当数组名作函数参数时,实参与形参之间不是"值传递",而是"地址传递",实参数组名将该数组的起始地址传递给形参数组,两个数组共享一段内存单元,编译系统不再为形参数组分配存储单元。
3) [size=11.000000pt]在变量作函数参数时,所进行的值传送是单向的。即只能从实参传向形参,不能从形参传回实参。形参的初值和实参相同,而形参的值发生改变后,实参并不变化,两者的终值是不同的。
[size=14.000000pt]数组名作为函数参数注意点:
1.形参数组和实参数组的类型必须一致,否则将引起错误。
2.形参数组和实参数组的长度可以不相同,因为在调用时,只传送首地址而不检查形参数组的长度。当形参数组的长度与实参数组不一致时,虽不至于出现语法错误(编译能通过),但程序执行结果将与实际不符,这是应予以注意的。
3.在[size=11.000000pt]函数形参表中,允许不给出形参数组的长度,或用一个变量来表示数组元素的个数。
4.关于数组名作为函数参数后,数组的长度信息会丢失,C语言中规定,不管什么类型的数据,数据的内存地址在内存中占用8个字节。sizeof(地址) --> 地址都是占8个字节
5多维数组也可以作为函数的参数。在函数定义时对形参数组可以指定每一维的长度,也可省去 第一维的长度。
|
|