函数中使用数组作为参数时,比如
void function(int a[]);
我们在调用该函数时,只需要传入一个int型变量的地址即可,该地址将作为形参数组 a[] 的首元素地址,值得注意的是,我们传入的实参,可以是一个int数组中任意元素的地址,比如
int array[5]={1,2,3,4,5};
function(array); //数组名即首元素地址
function(&array[1]); //array[1]的地址将作为形参数组的首元素地址
funtion(&array[2]); //rraya[2]的地址将作为形参数组的首元素地址
甚至是一个普通int型变量的地址也可以作为实参,比如
int i=1;
function(&i); //i的地址将作为形参数组首元素的地址
上种情况是能够通过编译的,但容易想到这样做很危险,当我们取形参数组的第二个元素时,这个元素的地址我们根本不知道是谁在使用
另外,访问形参数组的元素时,是不会提示我们数组越界错误的,如果你想,你可以访问到a[9999],当然,这部分内存是谁在使用,我们并不知道~比如
#include<stdio.h>
void get_array(int a[]);
void get_array(int a[]){
int i;
for(i=0;i<100;i++){
printf("a[%d]=%d\n",i,a[i]);
}
}
void main(){
int a[6]={0,1,2,3,4,5};
get_array(a);
}
打印结果: