0

嗨,我正在尝试获得一个空间来存储一些单词。我的计划是使用一个二维数组,它存储一个字符串。它看起来像这样:

pBuffer[0]---------->myBuffer[0][0] myBuffer[0][1]...
pBuffer[1]---------->myBuffer[1][0] myBuffer[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 回答