c语言函数返回二维数组
时间: 2023-12-29 11:04:19 浏览: 126
C语言动态分配二维数组
在C语言中,函数不能直接返回一个二维数组。但是,我们可以通过以下几种方法来实现函数返回二维数组的效果:
方法一:使用指针作为函数参数
```c
#include <stdio.h>
void getArray(int (*arr)[3]) {
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
arr[i][j] = i + j;
}
}
}
int main() {
int arr[2][3];
getArray(arr);
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
方法二:使用动态内存分配
```c
#include <stdio.h>
#include <stdlib.h>
int** getArray() {
int** arr = (int**)malloc(2 * sizeof(int*));
int i, j;
for (i = 0; i < 2; i++) {
arr[i] = (int*)malloc(3 * sizeof(int));
for (j = 0; j < 3; j++) {
arr[i][j] = i + j;
}
}
return arr;
}
int main() {
int** arr = getArray();
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
for (i = 0; i < 2; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
```
方法三:使用静态变量
```c
#include <stdio.h>
int** getArray() {
static int arr[2][3];
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
arr[i][j] = i + j;
}
}
return arr;
}
int main() {
int** arr = getArray();
int i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
阅读全文