Ste*_*oss 19
虽然你可能知道,char*[]是一个指向字符的指针数组,我猜你想要存储一些字符串.初始化这样的指针数组很简单:
char ** array = new char *[SIZE];
...或者如果你在堆栈上分配内存:
char * array[SIZE];
然后,您可能希望使用循环填充数组,例如:
for(unsigned int i = 0; i < SIZE; i++){
    // str is likely to be an array of characters
    array[i] = str;
}
如本答案的评论中所述,如果您使用new(动态分配)分配数组,请记住删除您的数组:
delete[] array;
Joh*_*don 11
根据您要初始化的内容,您可以执行以下任何操作:
char mystr[] = {'h','i',0};
char * myotherstring = "my other string";
char * mythirdstring = "goodbye";
char * myarr[] = {0};
char * myarr[] = {&mystr, myotherstring};
char * myarr[10];
char * myarr[10] = {0};
char * myarr[10] = {&mystr, myotherstring, mythirdstring, 0};
等等
像这样:
char* my_c_string;
char* x[] = { "hello", "world", 0, my_c_string };
小智 7
有一点我注意到你必须小心...... C和C++在初始化语法方面有所分歧.正如Mark B.上面指出的那样,你可以初始化一个char指针数组:
const char* messages[] =
{
    "Beginning",
    "Working",
    "Finishing",
    "Done"
};
但在C++中.正如kriss指出的那样,这会让你发出一个关于从字符串到char*的弃用转换的警告.那是因为C++假设你想要为字符串使用字符串; - }.
这并非总是如此.所以当你真的想要初始化一个char*数组时,我发现我必须这样做:
const char* messages[] =
{
    (char*)("Beginning"),
    (char*)("Working"),
    (char*)("Finishing"),
    (char*)("Done")
};
编译器现在很开心......