类似于这个问题: 在C语言中使用calloc申请二维数组
我需要帮助初始化一个2D字符数组,使其所有元素都被初始化为某个值(在这种情况下是'0')。我尝试了许多不同的方法,但都没有成功。请告诉我我哪里做错了。这段代码不起作用。谢谢!
char** init_array() {
char newarray[5][10];
int i, j;
for (i = 0; i < 5; i++) {
for (j = 0; j < 10; j++) {
newarray[i][j] = '0';
}
}
return newarray;
}
char **array = init_array();
当我尝试编译时,gcc给出的错误信息:
test.c: In function ‘init_array’:
test.c:12:2: warning: return from incompatible pointer type [enabled by default]
return newarray;
^
test.c:12:2: warning: function returns address of local variable [-Wreturn-local-addr]
test.c: At top level:
test.c:14:1: error: initializer element is not constant
char **array = init_array();
应该是这样吗?
char newarray[5][10];
char** init_array() {
int i, j;
for (i = 0; i < 5; i++) {
for (j = 0; j < 10; j++) {
newarray[i][j] = '0';
}
}
return newarray;
}
char **array = init_array();
malloc
动态分配内存。 - Barmarchar**
和char[][]
不是相同的类型。 - David C. Rankin