1

Bellow是我的C代码:

const char *l = "some text";
const char * const *m = {l};

当我尝试编译该代码时,我收到以下警告:

警告:从不兼容的指针类型初始化

谁能解释我为什么会出现这个警告以及我应该如何初始化第二个变量(m)?

4

2 回答 2

3

实际上,您没有以const正确的方式使用关键字。const适用于它遇到的第一个左标记,如果没有,则适用于第一个右标记。

所以,在你的情况下:

const char * const *m;

第一个const适用于char,就像 for 一样l。第二个适用于您的第一个*,这意味着 m 是指向常量指针的指针,该指针指向常量内容(​​“某些文本”)。既然你没有写

const char * const l;

您的两个指针的 const-ness 存在冲突,因此会发出警告。

我认为您想要的是保证存储的地址l不会被程序更改。如果是这样,那么您必须将声明更改l为这个:

const char * const l = "some text";
于 2013-03-08T13:05:03.913 回答
2

为什么不使用

const char* m[] = {l};

我认为这应该有效。

我想你实际上打算m长一个以上的元素,否则你不会做这么复杂的事情,对吧?

于 2013-03-08T13:01:48.387 回答