幽魂国度

 

常量指针与指针常量

const char*类型是指向常量的指针,不能修改其指向的内容,当可以修改其指向的地址。
例1:
char ch[5]="lisi";                //定义一字符串ch[],并赋值
const char* pStr=ch;         //定义一常量指针pStr,将ch赋给pStr
注:ch[]定义时须对其进行赋值,字符长度为5,最后一位为"\0"表示结束。
        在对pStr赋值时相当于将ch[]的首地址给pStr,因为const char*类型得指针变量只可以修改其本身的值,即变量保存的内存地址。
        因此该变量的值可以改变,但其指向的地址的内容不能改变。
    如:*pStr="jiliang";  //错误的,因为其直接改变了内容,所以无法将"jiliang"赋值给ch[];
              pStr="jiliang";     //正确的,因为其改变的是地址值,即pStr保存的是="jiliang"的首地址。
        我们无法通过pStr来修改其指向地址的内容,但可以通过ch[]来修改内容。
使用:利用指针类型来传递参数时,可以定义为const char*类型,保持内容的一致性。

char* const类型是一个指针常量,可以修改地址指向的内容,但不可以修改其地址值。
例2:
char ch[5]="lisi";                //定义一字符串ch[],并赋值
const char* pStr=ch;         //定义一指针常量pStr,将ch赋给pStr
注:对于指针常量,必须在定义时对其赋值。指针常量表示指针本身是常量,即地址值为常量。
       如:pStr="jiliang";     //错误的,因为该赋值将新的字符串地址赋值给指针常量,这是不允许的;
               *pStr="jiliang";//正确的,可以对指针常量指向的地址修改其内容。
 小结:
  const char*类型的指针其指向的内容是常量,不能修改,但其地址值可以修改;
  char* const类型的指针其地址值是常量,不能修改,但其指向的内容可以修改。
参考:<<VC++深入浅出>>孙鑫

posted on 2009-11-09 12:28 阅读(229) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜