Chinaunix首页 | 论坛 | 博客
  • 博客访问: 148719
  • 博文数量: 54
  • 博客积分: 1732
  • 博客等级: 上尉
  • 技术积分: 520
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-23 23:29
文章分类

全部博文(54)

文章存档

2011年(3)

2010年(26)

2009年(25)

分类: C/C++

2009-10-24 00:16:48

一直都记不住char *const与const char*哪个表示常量指针,哪个表示指向常量的指针,直到读完《The c++ programming language》第4章
c++标示符由四部分组成:(可有可无的)分类符(specifier), 类型名, declarator(不知道对应的中文术语是啥), 以及(可有可无的)初始化部分,如:
char *kings[] = {"Antigonus", "Seleucus", "Ptolemy"}
在这里,类型名是char, declarator是 *kings[], 初始化部分是 ={……}
分类符(specifier)通常是一个初始化关键字,如virtual, extern, 通常用来指示所声明的标示符的附加属性
declarator包括被声明的标示符名字和可有可无的声明操作符,常见的声明操作符如下:
*        指针        前置
*const    常量指针    前置
&        引用        前置
[]        数组        后置
()        函数        后置
declarator后置时与前置相比具有更高的优先级,因此,*kings[]声明kings首先是一个数组,数组中的元素为指针,而*func()则声明func首先是一个函数,该函数的声明操作符为指针,因此其返回一个指针,如果需要声明一个指向函数的指针,需要显式的用括号改变declarator的优先级,如(*funcP)()

在这里,作者的表述颠覆了我对标示符声明的理解,通过上面的表述,char *const 与const char*的区别自然也就清楚了

阅读(933) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:linux串口操作函数

给主人留下些什么吧!~~