如何返回静态多维字符数组?
#include<stdio.h>
#include<conio.h>
#define SIZE 3
char ** MyFunction(void)
{
static char arr[SIZE][SIZE]={
{'A', 'B', 'C'},
{'D', 'E', 'F'},
{'G', 'H', 'I'}
};
return arr;
}
void main(void)
{
char ** arr1 = NULL;
int i=0;
int j=0;
arr1 = MyFunction();
for(i=0 ; i<SIZE ; i++)
{
for(j=0 ; j<SIZE ; j++)
{
printf("%c, ", arr1[i][j]);
}
printf("\n");
}
getch();
}
最佳答案
首先,arr 不能是 char**
。它是一个地址,但不是指针的地址——它是 char[SIZE] 的地址。
我总是发现通过使用 typedef 分割维度来处理这些问题更容易。
#define SIZE 3
typedef char ROW[SIZE]; // a ROW type is an array of chars
ROW* MyFunction(void)
{
static ROW arr[SIZE]={ // arr is an array of ROW objects
{'A', 'B', 'C'},
{'D', 'E', 'F'},
{'G', 'H', 'I'}
};
return arr;
}
void main(void)
{
ROW* arr1 = NULL;
// etc...
关于c - 下面的代码有什么问题?如何纠正这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806900/