嗨,我想找个地方放几个字。
我的计划是使用二维数组,它存储一个字符串。
看起来是这样的:

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++;

三。错误和警告
error: variable-sized object may not be initialized
  char* pBuffer[i] = &myBuffer[i][0];
  ^
warning: unused variable 'pBuffer' [-Wunused-variable]
   char* pBuffer[255];

最佳答案

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.

关于c - 多个字符串的空间分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19202231/

10-10 09:42