0

こんにちは、いくつかの単語を保存するためのスペースを確保しようとしています。私の計画は、文字列を格納する 2 次元配列を使用することです。次のようになります。

pBuffer[0]---------->myBuffer[0][0] myBuffer[0][1]...
pBuffer[1]---------->myBuffer[1][0] myBuffer[1][1]...
..

ただし、エラーが発生し、これをデバッグするのに苦労しています。どうしたの?

1.宣言

char myBuffer[255][255];
char* pBuffer[255];

2.使い方

char* pBuffer[i] = &myBuffer[i][0];
pStream->cmdArray[i].u.word = &pBuffer[i];
strcpy(*pStream->cmdArray[i].u.word, infix_string);
i++;

3. エラーと警告

error: variable-sized object may not be initialized
  char* pBuffer[i] = &myBuffer[i][0];
  ^
warning: unused variable 'pBuffer' [-Wunused-variable]
   char* pBuffer[255];
4

2 に答える 2

2
char* pBuffer[i] = &myBuffer[i][0];

先頭の「char*」を削除すると、コンパイラは、pbuffer の元の定義を「隠す」pBuffer という新しい変数を宣言しようとしていると判断します。

char* pBuffer[255]; // declares pbuffer as an array of 255 char* pointers
char* pBuffer[i];   // illegal and, if it worked, would be a shadow declaration.
于 2013-10-05T20:39:08.757 に答える
1

変なこと書いてるから。pBuffer[i] = &myBuffer[i][0];もちろん、ループ内である必要があります。

于 2013-10-05T20:17:29.150 に答える