char words[wordCount][MAX_WORD_LENGTH];
配列の長さをユーザー定義できるようにするには、malloc を使用する必要があることはわかっていますが、2 次元配列でこれを行うにはどうすればよいでしょうか?
char words[MAX_WORD_LENGTH];
words = (words *) malloc (wordCount)
そのようなものは機能しますか?cを使い始めたばかりなので、まだ慣れています。
char words[wordCount][MAX_WORD_LENGTH];
配列の長さをユーザー定義できるようにするには、malloc を使用する必要があることはわかっていますが、2 次元配列でこれを行うにはどうすればよいでしょうか?
char words[MAX_WORD_LENGTH];
words = (words *) malloc (wordCount)
そのようなものは機能しますか?cを使い始めたばかりなので、まだ慣れています。
単語配列内の各単語ポインタのサイズをユーザー定義したい場合:
char * words[wordCount];
for (i =0; i< wordCount; i++)
words[i] = malloc(sizeof(char)*User_defined_Size);
2 つの添え字を使用して配列にインデックスを付けたい場合はwords[i][j]
、2 つの割り当てを行う必要があります (ポインターの処理に自信がある場合は 1 つにすることもできますが、そうでない場合は 2 つの方がよいでしょう)。この質問をします)。
ポインター用に十分なスペースと、データ用に十分なスペースを割り当てる必要があります。
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...
最初にこれを行う必要があります:
char *words = calloc(wordCount * MAX_WORD_LENGTH, sizeof(char));
アクセスwords[i][j] as words[i*MAX_WORD_LENGTH + j]
このリンクが役立つ場合があります
ポインターは、malloc を使用して C で 2D 配列を作成するために簡単に使用できます。アイデアは、最初にポインターの 1 次元配列を作成し、次に各配列エントリに対して別の 1 次元配列を作成することです。
別の答えは、2D配列のスタックオーバーフロー 自体malloc()に存在します(ポインターツーポインターを使用)
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);
}
あなたはこれを試すことができます...