读书人

看C++PRIMER把头都看大了!头晕眼花顺便

发布时间: 2012-03-09 16:54:57 作者: rapoo

看C++PRIMER把头都看大了!!!头晕眼花顺便问个问题!
const char*
和char* const
有什么区别

[解决办法]
类型声明中const用来修饰一个常量,有如下两种写法,那么,请问,下面分别用const限定不可变的内容是什么?
  
    1)、const在前面
  
  const int nValue; //nValue是const
  const char *pContent; //*pContent是const, pContent可变
  const (char *) pContent;//pContent是const,*pContent可变
  char* const pContent; //pContent是const,*pContent可变
  const char* const pContent; //pContent和*pContent都是const
  
    2)、const在后面,与上面的声明对等
  
  int const nValue; // nValue是const
  char const * pContent;// *pContent是const, pContent可变
  (char *) const pContent;//pContent是const,*pContent可变
  char* const pContent;// pContent是const,*pContent可变
  char const* const pContent;// pContent和*pContent都是const
  
  
    答案与分析:
  
    const和指针一起使用是C语言中一个很常见的困惑之处,在实际开发中,特别是在看别人代码的时候,常常会因为这样而不好判断作者的意图,下面讲一下我的判断原则:

    沿着*号划一条线,如果const位于*的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。你可以根据这个规则来看上面声明的实际意义,相信定会一目了然。
  
    另外,需要注意:对于const (char *) ; 因为char *是一个整体,相当于一个类型(如 char),因此,这是限定指针是const。

转自  http://baike.baidu.com/view/1065598.htm
[解决办法]
http://blog.csdn.net/believefym/archive/2007/10/21/1836168.aspx

读书人网 >C++

热点推荐