C++ 重新分配大小未知的常量字符数组

C++ 重新分配大小未知的常量字符数组,c++,c,arrays,char,constants,C++,C,Arrays,Char,Constants,在我的主函数中有两个数组: const char* basket[]; const char* basket_peach[] = {"1 1111 2 0000","2 2222 2 0000", 0}; ... if (strcmp (c_id,"somebasketid") == 0){ basket = basket_peach; } ... 如果我尝试这样做: ... if (strcmp (c_id,"somebasketid") == 0){

在我的主函数中有两个数组:

const char* basket[];
const char* basket_peach[] = {"1 1111 2 0000","2 2222 2 0000", 0};
...
    if (strcmp (c_id,"somebasketid") == 0){
        basket = basket_peach;
    }
...
如果我尝试这样做:

...
    if (strcmp (c_id,"somebasketid") == 0){
         const char* basket[] = basket_peach;
    }
...
我的主要函数告诉我这个“错误:使用未声明的标识符‘basket’”


<> P> >简单地说,你不能在C和C++中分配数组。 此外,以下内容甚至不会编译:

const char* basket[];
数组必须声明为显式大小(在
[]
中)或初始值设定项列表,编译器可以从中推断大小

如果你写C++,你真正需要的是:


这也将如您所期望的那样起作用。

您需要空间来放置
篮子

const char* basket[]; /* Array of pointers with 0 length */
const char* basket_peach[] = {"1 1111 2 0000","2 2222 2 0000", 0};
应该是

const char *basket_peach[] = {"1 1111 2 0000","2 2222 2 0000", 0};
const char *basket[sizeof(basket_peach) / sizeof(basket_peach[0])];

不能以这种方式分配给数组,请使用循环:

for (size_t i = 0; i < sizeof(basket) / sizeof(basket[0]); i++) {
    basket[i] = basket_peach[i];
}

为编译器启用所有警告。然后研究数组和指针。谢谢你的回答,但是当尝试你的第一个解决方案时,我不能指定一个列表。无法使用初始值设定项列表初始化非聚合类型“std::vector”。它应该可以工作。您是否包括
?还是使用旧的/不符合版本的C++?相关的:
const char *basket_peach[] = {"1 1111 2 0000","2 2222 2 0000", 0};
const char *basket[sizeof(basket_peach) / sizeof(basket_peach[0])];
basket = basket_peach;
for (size_t i = 0; i < sizeof(basket) / sizeof(basket[0]); i++) {
    basket[i] = basket_peach[i];
}
const char *basket_peach[] = {"1 1111 2 0000","2 2222 2 0000", 0};
const char **basket;
...
basket = basket_peach;