c++ char * const p问题
2016-09-03 20:14
120 查看
事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。
Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:
把一个声明从右向左读。
char * const cp; ( * 读成 pointer to )
cp is a const pointer to char
const char * p;
p is a pointer to const char;
char const * p;
同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。
看个代码就明白了
Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:
把一个声明从右向左读。
char * const cp; ( * 读成 pointer to )
cp is a const pointer to char
const char * p;
p is a pointer to const char;
char const * p;
同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。
看个代码就明白了
char str[10]={"1231"}; const char *p = str; p = str; //p[0] = 'b';出错,因为char * 这段内存为const char * const p1 = str; //p1 = str; 出错,因为字符型指针是const p1[0] = 'b'; char const * p2=str; //p2[0] = '1'; 出错,因为这种形式等价与const char *p
相关文章推荐
- C++: VC6转VC8出现问题:error C2664: “fopen”: 不能将参数 1 从“CString”转换为“const char *”
- c#调用c++开发的dll const char* 返回值接收问题
- 【C++学习笔记】由 const char* 引出的一系列问题
- C++: VC6转VC8出现问题:error C2664: “fopen”: 不能将参数 1 从“CString”转换为“const char *”
- C++ const char* 常量字符串拼接问题
- C和C++的内存操作小贴士(一):const char*的内存释放问题
- c#调用c++开发的dll const char* 返回值接收问题
- C++: VC6转VC8出现问题:error C2664: “fopen”: 不能将参数 1 从“CString”转换为“const char *” from http://www.cnblogs.com/moon2bird/archive/2009/02/27/1399675.html
- c++ 内存存储 解决char*p, char p[]的问题
- const char to LPCTSTR不能转化问题
- C++ 错误:const char [10]”转换为“const wchar_t
- C++中const的不同使用方法及问题总结
- 'char **' 和 'const char **'的兼容性问题
- 关于const char*和char*、const char** 和char** 赋值问题
- const char to LPCTSTR不能转化问题
- 关于LPCSTR LPCTSTR const char*的问题
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等
- 【VC++】不能将参数 1 从“_TCHAR”转换为“const char* 问题解决
- 关于CString剖析,“strcmp”: 不能将参数1从“CString”转换为“const char *”问题