const char*赋值的问题
昨天编程遇到一个问题:const char*给 char*赋值报错
后来百度了一下感觉得到了一个比较靠谱的答案:指向const的指针不能被赋给指向非const的指针,所以应该用strcpy,也就是另开一块内存,把字符一个个复制过去
我现在只是要保存一个函数的返回值,这个返回值是const char*,综合上面的解释,是不是只要我先申请一段内存就可以用来保存我的返回值呢?我接着做了如下测试:
const char * p = "hello";
string q1 = p;
const char * q2 = p;
char q3[6] = p;
char q4 = new char[6]; q4 = p;
用g++编译只有前面两个没有报错,现在我比较纳闷,除了第二个外,其它的都新申请了内存,为什么有的编译通过有的又不通过呢?还有第二个通过了又该怎么解释?