数组做函数形参,等同于指针
#include <stdio.h>
void fa( int b[], int len ) //数组做函数形参,等同于指针
{
int i=0;
printf(" 函数形参数组b长度=%d \n",sizeof(b)); //相当int类型指针长度
printf(" 函数形参数组b[0]长度=%d \n",sizeof(b[0]));
for(i; i<len; i++)
{
printf(" b[%d]=%d ",i,b[i]);
}
b[0]=999; // 重新赋值b[0]
printf(" \n");
}
void fp( int *p, int len ) //指针做函数形参
{
int i=0;
printf(" 函数形参指针p长度=%d \n",sizeof(p)); //int类型指针长度
for(i; i<len; i++)
{
printf(" a[%d]=%d ",i,*(p+i)); // *(p+i)等同于p[i]
}
*p=888; //重新赋值*P
printf(" \n");
}
int main()
{
int a[10]={100,101,102,103,104,105,106,107,108,109};
printf(" 数组a长度=%d \n",sizeof(a));
fa( a, sizeof(a)/sizeof(a[0]) );
printf(" a[0]=%d a[1]=%d \n",a[0],a[1]); //在函数void fa( int b[], int len )中对 b[0]重新赋值,等同于对main函数a[0]重新赋值
fp( a, sizeof(a)/sizeof(a[0]) );
printf(" a[0]=%d a[1]=%d \n",a[0],a[1]); //在函数void fp( int *p, int len )对 *p重新赋值,等同于对main函数a[0]重新赋值
return 0;
}
/*
数组a长度=40
函数形参数组b长度=4
函数形参数组b[0]长度=4
b[0]=100 b[1]=101 b[2]=102 b[3]=103 b[4]=104 b[5]=105 b[6]=106 b[7]=107 b[8]=108 b[9]=109
a[0]=999 a[1]=101
函数形参指针p长度=4
a[0]=999 a[1]=101 a[2]=102 a[3]=103 a[4]=104 a[5]=105 a[6]=106 a[7]=107 a[8]=108 a[9]=109
a[0]=888 a[1]=101
*/