贝娄是我的C代码:
const char *l = "some text";
const char * const *m = {l};
当我尝试编译该代码时,我收到此警告:
警告:从不兼容的指针类型初始化
有人可以解释为什么会发出警告,我应该如何初始化第二个变量(m
)?
答案 0 :(得分:3)
实际上,您没有以正确的方式使用const
关键字。 const
适用于它遇到的第一个左侧令牌,如果没有,则适用于第一个右侧令牌。
所以,在你的情况下:
const char * const *m;
第一个const
适用于char
,就像l
一样。第二个适用于您的第一个*
,这意味着m是指向常量内容的常量指针(“some text”)的指针。既然你没有写过
const char * const l;
与你的两个指针的常数存在冲突,因此发出警告。
我认为你想要的是保证l
中存储的地址不会被程序改变。如果是这样,那么您必须将l
的声明更改为此声明:
const char * const l = "some text";
答案 1 :(得分:1)
为什么不使用
const char* m[] = {l};
我认为这应该有用。
我想你实际上打算让m
多于一个元素,否则你不会做那么复杂的事情,对吗?