C 语言中char* 和const char*的区别
2017-12-13 20:51
399 查看
const char *p = "123"; p[1] = '3'; // 会报错 p = "456"; // 不会报错 const char * 只是说指针指向的内容不可变,但指针本身可以再赋值 假设你的程序是 char * findArg(char *s) { return s; } 这个时候,你如果传const char *进去,那么好一些的编译器,会知道,你传回的函数返回值,也是const char *,也就是指针指向的内容不可写。 所以如果你传进去的是const char *,最好还是把 char *name写成const char *name,因为char *name可以对指针指向的内容进行修改。 用强制转换当然也可以,但是 const char *name2 = "123"; char *name = (char *)name2; 如果你对name指向的内容进行改变,如 name[2] = '4'; "123"是常量,对常量进行修改,你的程序就会发生不可预知的错误 char* findArg(char *){.....} 如果你这个函数,对传入的参数,不会对指针指向的内容进行修改,最好写成 char * findArg(const char *) {....} 或 const char * findArg(const char *) {....}
相关文章推荐
- char*,const char*和string 三者转换及区别
- const char*、char*、char* const、char[]、string的区别及其转换
- C语言基础指针之const char *p,char const *p,,cahr * const p 三者之间的区别
- char*,const char*和string的区别以及相互转换
- char * const p与 char const * p 区别
- const char* 与 char* const 区别
- 关于 char* 和 char[]的区别
- 关于const char *p 、char const*p 、char *const p 的区别
- const char*, char const*, char*const的区别
- const char*, char const*, char*const的区别
- const char *p,,char const *p,,cahr * const p 三者之间的区别
- [转载]char*,const char*和string的相互转换
- string和char*的区别以及const_cast<>()
- const char *p/char const *p/char * const p有何区别
- 关于const char*和char*、const char** 和char** 赋值问题
- char[]和char*的区别
- cont char *p 和 char* const p 区别及记忆方法
- const char*, char const*, char*const的区别
- char*,const char*,char[],string之间的转换问题。
- c++中string、const char*和char*之间的相互转换