在C语言中,一维数组,做函数参数,实际上传递的是数组元素的首地址,可以是数组形式,也可以是指针形式,如Invertal(int p,int len)等价于Invertal(int p[],int len),编译器不检查数组长度;形参数组和实参数组占用一段共同的内存,用地址传递效率较高,如果确定此被调函数不需要修改数组中的元素,可以在参数前面加const,如Invertal(const intp,const int len),这样如果在调用过程试图更改数组元素,编译器会报错。参考代码如下:
void Invertal(int p, int len);
void outputArray(intp, int len);
int main(int argc, char * argv[])
{
int a[10] = {1,3,5,7,12,11,0,9,22,8};
outputArray(a, 10);
printf("\n");
Invertal(a,10);
outputArray(a, 10);
printf("\n");
system("pause");
return 0;
}
void Invertal(int *p, int len)
{
int i,j;
int tmp;
for (i = 0, j = len - 1; i < len / 2; i++, j--)
{
tmp = p[i];
p[i] = p[j];
p[j] = tmp;
}
}
void outputArray(int *p, int len)
{
int i;
for (i = 0; i < len; i++)
{
printf("%d ", p[i]);
}
}