`
yuanlanjun
  • 浏览: 1187916 次
文章分类
社区版块
存档分类
最新评论

C语言中 const浅析

 
阅读更多

最近参加笔试面试,碰到好多关于const的问题,这里总结一下:

const是一个C语言的关键字,它限定一个变量不允许被改变。使用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就是修饰指针本身,即指针本身是常量。你可以根据这个规则来看上面声明的实际意义,相信定会一目了然。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics