0
char words[wordCount][MAX_WORD_LENGTH];

我知道我需要使用 malloc 才能拥有用户定义的数组长度,但是我将如何使用二维数组来做到这一点?

char words[MAX_WORD_LENGTH];
words = (words *) malloc (wordCount)

这样的东西会起作用吗?刚开始使用c,所以我还是习惯了。

4

5 回答 5

0

链接可能会有所帮助

指针可以很容易地用于使用 malloc 在 C 中创建二维数组。这个想法是首先创建一个一维指针数组,然后为每个数组条目创建另一个一维数组。

另一个答案存在于堆栈溢出中,它自 malloc() 用于 2D 数组(使用指针到指针)

于 2013-01-24T05:01:32.917 回答
0

你必须先这样做:

char *words = calloc(wordCount * MAX_WORD_LENGTH, sizeof(char));

和访问words[i][j] as words[i*MAX_WORD_LENGTH + j]

于 2013-01-24T05:01:51.993 回答
0

如果您想为单词数组中的每个单词指针设置用户定义的大小:

char * words[wordCount];
for (i =0; i< wordCount; i++)
words[i] = malloc(sizeof(char)*User_defined_Size);
于 2013-01-24T05:06:19.260 回答
0

如果您想使用两个下标索引数组words[i][j],那么您需要进行两次分配(好吧,如果您对指针的处理非常有信心,您可以将其分配一次,但如果您是问这个问题)。

您需要为指针分配足够的空间,并为数据分配足够的空间:

char **words = malloc(wordCount * sizeof(*words));
char  *data  = malloc(wordCount * MAX_WORD_LENGTH);

if (words == 0 || data == 0)
{
    free(data);
    free(words);
    ...report error?...
}

for (int i = 0; i < wordCount; i++)
    words[i] = data + (i * MAX_WORD_LENGTH);

...now you can use words[i][j] to access the jth character of the ith word...
于 2013-01-24T05:07:50.150 回答
-1
char **words = NULL;
words = (char **)malloc(sizeof(char*) * user_defined_size_A);
for(i = 0; i < user_defined_size_A; i++) {
   words[i] = (char*) malloc(sizeof(char) * user_defined_size_B);
}

你可以试试这个...

于 2013-01-24T05:13:13.880 回答