c++ char * const p问题

事实上这个概念谁都有,只是三种声明方式非常相似很容易记混。 
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
    
时间: 2024-10-05 16:41:31

c++ char * const p问题的相关文章

string char * const char *之间的互相转换

string  ->   const char * 用str的c_str()方法或者data()方法均可,这个两个方法返回值为cong char * string str = "hello"; const char *a = str.c_str(); const char *b = str.c_str(); const char *  ->  string const char*转换为 string,直接赋值即可 string  ->  char * vs不让用str

const char*、char*、char* const、char[]、string的区别

1.const char* p: p is a pointer to const char(char const* p 一样)   意思就是不能通过p指针来修改p指向的内容(但是内容可以修改).2.char* p      : p is a pointer to char   意思就是可通过p指针来修改p指向的内容3.char* const p: p is a const pointer to char   意思就是p指针是一个常指针,他指向的内存地址不能变,定义的时候就得初始化   一旦给指针

const char*, char const*, char*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只能属于前面的类型. C++标准规定,const关键字放在

const char* 和 char* const

const char* --指向常量的指针 (注意:const在char的前面或后面都是一样的额,主要关注是const在"*"的前面) 例: char ch[5]="lisi";  //字符数组的元素为5,包含"\0" const char* pStr=ch; *pStr='w';    //error pStr="wangwu";    //ok char* const  --指针常量 例: char ch[5]="

C++中const char * const name;char * const name;cons

C++中const char * const name;char * const name;const char * name三者之间的区别? 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:HG Zhao链接:http://www.zhihu.com/question/26908463/answer/34499495来源:知乎 const *说明指向的是常量.* const说明指针是常量.const * const说明指针和指向的都是常量.

const char*,char *const,const char*const

const char * cp;cp is a pointer to const char;cp是一个指针变量,指向一个常量字符创,注意cp是指针变量,指向const char,那么意味着cp可以指向其他的const char:但需要注意的是cp指向的是const char,所以不能通过cp来修改const char:cp可以指向其他其他的const char和通过cp来修改const char 是完全不同的概念,注意区分 char const * cp:同上,辨别技巧,const都在*的左边,

const char* &p 和 char* const &p 区别

const char* &p 和 char* const &p 两种引用: 两者都是对一个对象的引用. 但是前者的"这个对象"是 const char*,一个指向 const char 的指针,注意!虽 然这个指针指向的char不可以改变,但这个指针本身的值是可以改变的,也就是说, 他可以被改变而指向另一个 const char 对象. 后者的"这个对象"则是char*, 一个指向char的指针.这个指针指向的东西是可以 改变的,但是这个指针本身是不

char* const char* string

1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string 直接赋值即可 const char* c_s = "abc"; string s(c_s); 3. string转char* string s = "abc"; char* c; const int len = s.length(); c = new char[len

const char *p 和char * const p

把一个声明从右向左读. char * const cp; ( * 读成 pointer to ) cp is a const pointer to char :const是修饰指针,表明指针不能修改指向了const char * p; p is a pointer to const char; :表明const是修饰一个只读变量,该内存位置是只读的,不可修改,p依旧可以指向别的地方 另外 #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查 typedef是在编译时处理的.它