定义的数组,实际上是“字符串指针数组”,而你的定义却是“字符数组”,必须把 char 改为 char *。
C/C++规定,字面的字符串类型是“常量”,所以,还要再加上 const。下面的 pa 定义,也必须加上 const 才能初始化为 a。
结果:
const char *a[] = { "hello", "the", "world" };
const char **pa = a;
其它地方的错,都是这里引起的。
解决办法是:强制类型转换。
char * Singer::pv[] = {(char*)"other", (char*)"alto", (char*)"contralto",
(char*)"soprano", (char*)"bass", (char*)"baritone", (char*)"tenor"};
扩展资料:
const char* 可以用 char* 初始化
char* f()
{
char* ret = "asdf";
return ret;
}
main()
{
const char * p = f(); // no error
return 0;
}
char * 和 char[] 声明的时候都要进行初始化。
char * 是指针,如果不初始化不知道指向哪,会出问题。
初始化方式:
char * pt= (char*)calloc(sizeof(char)*n);
char * pt= "adfsa"
char pt[] = "safasd"
两个问题:
1、你定义的数组,实际上是“字符串指针数组”,而你的定义却是“字符数组”,必须把 char 改为 char *。
2、C/C++规定,字面的字符串类型是“常量”,所以,还要再加上 const。下面的 pa 定义,也必须加上 const 才能初始化为 a。
结果:
const char *a[] = { "hello", "the", "world" };
const char **pa = a;
其它地方的错,都是这里引起的。