C语言基础有关问题
C语言基础问题,高手进C/C++ codeconst char ** pchar ** ppp pp如果是这样 编译器就会发一条警告而下
C语言基础问题,高手进
C/C++ codeconst char ** p;char ** pp;p = pp;
如果是这样 编译器就会发一条警告
而下面的就不会
C/C++ codechar *cp;const char *ccp;cpp = cp;
这个为什么可以呢?
按理说cp 指向的是 一个char类型
而ccp指向的是const char 类型
两个类型不应该相容啊
这也是为什么第一段代码 会报警告
我不明白为什么第二段代码可以无警报编译
编译器 是gcc
[解决办法]const char*是一个不能被修改的指针,因此从普通指针转过来是没问题的
而char*是普通指针,是可以修改的,如果你用char*修改了值,实际上相当于修改了const char*的值,因此变的不安全,所以系统会给警告
[解决办法]只规定可以从
T* 转换成 const T*
但是下面:
const char ** p; //T1 = char char *
char ** pp; //T2 = char*
p = pp;
T1 != T2时,没有 T2 * 到 T1*的转换.
[解决办法][解决办法]C专家编程19页……
[解决办法]比较比较 const char *p 与 char *const p 就知道了!