1:预备知识
1:理解int* returnSize, int** returnColumnSizes两个的参数的意思。
2:因为题中要返回的是一个二维数组,那么我们还应该返回这个二维数组的行数,列数。
3:行数是确定的,只需要传入一个变量的地址,最后对地址操作改变其值就行,也就是(*returnSize)=行数。
4:而列数可能每一行的列数是不同的,所以需要返回一个一维的数组来保存每一行的列数。
5:若函数的返回值就是这个一维数组,相信大家都会写。
#include<stdio.h>
#include<stdlib.h>
#define SIZE 100
int *f(void)
{
int *a=(int *)malloc(sizeof(int)*SIZE);
return a;
}
int main(void)
{
int *a=f();
}
现在主函数就可以使用这个一维数组。
5:但现在函数的返回值不是这个一维数组,我们就需要传入参数,生成一个在主函数中可以使用的·一维数组。(为了方便,设函数返回值为void)
void f(int *a)
{
a=(int *)malloc(sizeof(int)*SIZE);
}
int main(void)
{
int *a=NULL;
f(a);
return 0;
}
大家觉得这样可以吗,显然是不可以的,c语言只是值传递,你要在其他函数中对a操作,应该传入a的地址。
#include<stdio.h>
#include<st