1.数组作为函数参数
1.PNG
如上图所示,数组作为函数参数传入时,除了需要数组名(或者指针),还需要传入数组元素个数(或者指定数组的结束符,类似于字符串自带的\0)。
例如:int kk[5]; int *gg = (int *)malloc(5 * sizeof(int))
①SumIt(kk, 5) ②SumIt(gg, 5)
两种调用方法都是OK的,本质相同
思考:如何写一个返回数据类型为数组的函数?
方法1: 将被调用函数内的数组变量声明为static , 然后将数组地址返回给调用函数
int *getNums(){
static int x[5] = {1, 2, 3, 4, 5};
return x;
}
函数调用结束后,会释放函数内部的自动变量,通过给自动变量添加static属性,延长变量的生命周期,从而能让调用函数使用被调用函数内部定义的变量
方法2:申请内存,返回内存地址,但是调用函数需要管理返回的内存指针(释放)
int *getNums(){
int *k = (int *)malloc(5 * sizeof(int)); // 申请了内存,函数内并没有释放
for(int i = 0; i < 5; ++i){
*(k++) == i * i;
}
return k;
}
