#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#define M 3
#define N 5
int (*func())[N]; //声明一个函数func,返回一个[?][N]类型的指针
int main()
{
int (*a)[N];
int i, j;
{
int (*a)[N];
int i, j;
a = func();
for(i = 0; i < M; i++) //遍历二维数组
{
for(j = 0; j < N; j++)
{
printf("%d ", a[i][j]); //printf("%d ", *((*(a+i))+j));
for(j = 0; j < N; j++)
{
printf("%d ", a[i][j]); //printf("%d ", *((*(a+i))+j));
}
printf("/n");
}
free(a);
return 0;
}
free(a);
return 0;
}
int (*func())[N]
{
int (*b)[N]; //声明一个(指向[?][N]类型的二维数组的)指针
{
int (*b)[N]; //声明一个(指向[?][N]类型的二维数组的)指针
int i, j;
b = calloc(M * N, sizeof(int)); //分配空间
if(NULL == b) //NULL写在前面,这样编译器会提示NULL = b这样的错误
{
perror("calloc error");
exit(1);
}
b = calloc(M * N, sizeof(int)); //分配空间
if(NULL == b) //NULL写在前面,这样编译器会提示NULL = b这样的错误
{
perror("calloc error");
exit(1);
}
for(i = 0; i < M; i++) //初始化二维数组
{
for(j = 0; j < N; j++)
{
b[i][j] = j; //*((*(b+i))+j) = j;
}
for(j = 0; j < N; j++)
{
b[i][j] = j; //*((*(b+i))+j) = j;
}
}
return b;
}
return b;
}
本文介绍如何在C语言中定义一个函数,该函数返回一个二维数组的指针。通过示例代码展示了如何声明、分配内存、初始化二维数组,并在主函数中进行遍历和释放内存的操作。在函数`func()`中,使用`calloc`分配了一个MxN大小的二维数组,然后返回其地址。在`main()`函数中,调用`func()`获取二维数组的指针,遍历并打印数组元素,最后释放内存。
1132

被折叠的 条评论
为什么被折叠?



