"char *"的值不能用于初始化"char **"类型的实体

请帮忙看一下,这段程序的错误如何修改?... 请帮忙看一下,这段程序的错误如何修改? 展开
 我来答
大野瘦子
高粉答主

2019-07-03 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.7万
展开全部

定义的数组,实际上是“字符串指针数组”,而你的定义却是“字符数组”,必须把 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"

john_lee1969
推荐于2017-12-15 · TA获得超过1700个赞
知道小有建树答主
回答量:419
采纳率:100%
帮助的人:529万
展开全部

两个问题:

1、你定义的数组,实际上是“字符串指针数组”,而你的定义却是“字符数组”,必须把 char 改为 char *。

2、C/C++规定,字面的字符串类型是“常量”,所以,还要再加上 const。下面的 pa 定义,也必须加上 const 才能初始化为 a。

结果:

const char *a[] = { "hello", "the", "world" };
const char **pa = a;

其它地方的错,都是这里引起的。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式