【发布时间】:2018-04-14 06:57:12
【问题描述】:
我不明白下面的代码有什么问题。它应该 malloc 一个 2D char array[5][30](称为 LENGTH),将它传递给一个函数并用一个字符串填充它。它在函数中工作得很好;我可以从那里毫无问题地打印它。但是我什至无法从 main() 函数中打印第一个(如果我尝试,应用程序将崩溃)。 有人可以解释一下我做错了什么吗?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LENGTH 5
void fillArray(char array[][LENGTH]) {
for (int i = 0; i < 5; i++) {
strcpy(array[i],"Hi World");
}
for (int i = 0; i < 5; i++) {
printf("%s\n",array[i]);
}
}
int main() {
char** array = (char**)malloc(5*sizeof(char*));
for (int i = 0; i < 5; i++) {
array[i] = (char*)malloc(LENGTH);
}
fillArray(array);
printf("%s",array[0]);
getchar();
return 0;
}
【问题讨论】:
-
strlen("Hello World") > 5
-
指向指针的指针称为交错数组,与数组数组不同。参见例如this old answer of mine 了解原因的简单“图片”。
-
OT:
#define LENGTH 5嗯...你是说#define LENGTH 30吗?