数组元素作参数名---------------值传递!
#include <stdio.h>
void swap2(int x,int y);
void swap2(int x,int y)
{ int z;
z=x; x=y; y=z;
}
main()
{ int a[2]={1,2};
swap2(a[0],a[1]);
printf("a[0]=%d\na[1]=%d\n",a[0],a[1]);
}
数组名作函数参数--------------地址传递
#include <stdio.h>
void swap2(int x[])//形参用数组定义
{ int z;
z=x[0]; x[0]=x[1]; x[1]=z;
}
main()
{ int a[2]={1,2};
swap2(a);
printf("a[0]=%d\na[1]=%d\n",a[0],a[1]);
}
结论:
1、数组元素作函数参数是,实参与形参间单向值传递。
2、数组名作函数参数时,实参和形参间发生地址传递;
在主调函数与被调函数分别定义数组,且类型应一致;
形参数组大小(多维数组第一维)可不指定,形参数组名表示地址;