1、数组作为参数传递给函数时,在函数内部对数组进行的修改在函数退出后仍然适用,在这一点上数组作为参数和指针作为参数效果一样。
2、数组作为参数传递之前(与数组声明在同一个作用域内),sizeof(数组)得到的值是数组元素个数*每个元素所占字节数。
数组作为参数之后(在子函数的作用域内,与数组声明没在同一个作用域内),size(数组)得到的是本系统中指针变量所占字节数。
综上所述,数组作为参数传递给函数时,实际上是吧指针传递过去了。
如下例所示:
#include<stdio.h>
void test_array(int b[])
{
printf("size_b=%5d\n",sizeof(b));
int j;
for(j=0;j<6;j++)
b[j]=2;
}
int main()
{
int i;
int a[]={1,2,3,4,5,6};
printf("size_a=%5d\n",sizeof(a));
for(i=0;i<6;i++)
printf("%5d",a[i]);
printf("\n");
test_array(a);
for(i=0;i<6;i++)
printf("%5d",a[i]);
printf("\n");
return 0;
}
以上小程序运行的结果是:
size_a= 24
1 2 3 4 5 6
2 2 2 2 2 2
size_b= 4
符合以上所描述。