读书人

C语言基础有关问题

发布时间: 2012-03-09 21:42:54 作者: rapoo

C语言基础问题,高手进

C/C++ code
const char ** p;char ** pp;p = pp;

如果是这样 编译器就会发一条警告
而下面的就不会

C/C++ code
char *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/C++ code

const char ** p;
char ** pp;
p = pp;


[解决办法]
C专家编程19页……
[解决办法]
比较比较 const char *p 与 char *const p 就知道了!

读书人网 >C语言

热点推荐