1.传递二维数组
我们有时需要传递二维数组,方法如下
main函数中的实参为二维数组的数组名:
int arr[2][3]={1,2,3,4,5,6};
Array(arr);//某函数调用
函数中形参
void Array(int** arr);
2.二维数组作为函数的返回值
char ** buildArray(int* target, int targetSize, int n, int* returnSize){
char **string;
string=(char **)malloc(211*sizeof(char *));//先初始化二维数组的行
for (int i=0;i<210;i++)//再初始化二维数组的列
string[i]=(char *)malloc(10*sizeof(char));
……
return string;//返回二维数组的数组名
}
int main()
{
int target[5]={2,4,6,7,8};
int a;
a=100;
char** c=buildArray(target,5, 10, &a);//主函数里返回值的接受
for(int i=0;i<(a);i++)
{
printf("%s\n",c[i]);
}
return 0;
}
注:
char **string;
string=(char **)malloc(211*sizeof(char *));//先初始化二维数组的行
for (int i=0;i<210;i++)//再初始化二维数组的列
string[i]=(char *)malloc(10*sizeof(char));
相当于
char string[211][10];
但好像这样子写不行~主函数接收的返回值容易是空指针,如有大神知道原因还请指教!