const char * 和 char *const区别理解

1886阅读 0评论2011-12-09 hebingyue
分类:C/C++

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;

======================================================================
测试代码:
  1. #include <stdio.h>

  2. int main( int argc, char *argv[] )
  3. {
  4.     char p[] = "test string";

  5.     const char * p1 = p; //p1 is a pointer to const char;
  6.     //*(p1 +2 ) = 'L'; // wrong, 内容是常量
  7.     p1 = "new test string p1"; //right,指针可以改


  8.     char * const p2 = p; //p2 is a const pointer to char
  9.     *(p2 + 2 ) = 'L'; // right , 指针是常量,内容可以修改
  10.     //p2 = "new test string p2"; //wrong, 指针是常量不能修改

  11.     fprintf(stdout, "p1=%s\np2=%s\n", p1, p2);

  12.     return 0;
  13. }
上一篇:suse11.4下添加本地安装源
下一篇:vc2010工程太大,一键瘦身法