一、数组的传递给子函数时,传递的是首地址,不能传递长度。
二、子函数的形参中,数组不需要标明长度,即a[ ]就好。
三、若标注下标长度,程序不会出错(因为根本就不会传递长度),但是会暴露对第一点的不理解,如实在需要数组长度可另设形参,形参名与实参不必相同。
四、子函数中可以改变数组内元素的值。
#include <stdio.h>
//数组名传递到子函数后,子函数的形参接收到的是数组的起始地址
//子函数是接收不到数组的长度的,因此需要再设置一个参数传递数组的长度
//也不需要写成 void print(int a[5], int length)
//虽然程序不会出错,这样会让人觉得你没有理解
void print(int b[], int length)//形参的名字不必和实参相同
{
int i;
for(i=0; i<length; i++)
{
printf("%3d",b[i]);
}
b[3] = 20;
}
int main() {
int a[5] = {1, 2, 3, 4, 5};
print(a,5);//数组在传递给子函数时,它的长度传递不过去
printf("\n%d", a[3]); //子函数中可以改变数组里元素的值
return 0;
}