首页
社区
课程
招聘
[分享]C语言中很多人不知道的小知识
2009-3-25 22:01 4588

[分享]C语言中很多人不知道的小知识

2009-3-25 22:01
4588
高手就不用看了!
我只是觉得很多人可能不知道才抄出来分享的,如果大部分人都知道了就当我无知了。

1、你明白下面的声明的确切意思吗?
char  *  const  *(*next) ();

理解C语言声明的优先级规则
A    声明从它的名字开始读取,然后按照优先级顺序依次读取。
B   优先级从高到低依次是:
   B.  1  声明中被括号括起来的那部分
   B.  2  后缀操作符:
         括号( )表示这是一个函数,而
         方括号[ ]表示这是一个数组。
   B.  3  前缀操作符:星号*表示“指向……的指针”
C  如果const和( 或 ) volatile关键字的后面紧跟类型说明符(如int,long等),那么它作用于类型说明符。在其他情况下,const和( 或 ) volatile关键字作用于它左边紧邻的指针星号。

C语言的赋值规则
char *cp;
const char *cpp;
cpp=cp;
这样是没有问题的,而
char **cp;
const char **cpp;
cpp=cp;
这样是有问题的。
这些例子可能大家都懂,其实我只是想说C语言的赋值规则:
两个操作数都是指向有限定符或无限定符的相容类型的指针,左边指针所指向的类型必须具有右边指针所指向类型的所有限定符。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (6)
雪    币: 393
活跃值: (100)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
iiii 1 2009-3-25 23:19
2
0
看不懂
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
xPLK 3 2009-3-25 23:24
3
0
可以参考下《C陷阱与缺陷》
雪    币: 229
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cnsyzb 2009-3-26 00:46
4
0
支持一把吧。楼主迫切需要支持。我看出来的。
雪    币: 140
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lafeng 2009-3-26 12:02
5
0
呵呵,谢谢支持!我原来对于复杂的真的不懂怎么分析的,我也怀疑别人可能也不懂,所以我才贴出来。
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mkuymkuy 2009-3-26 23:23
6
0
怎么觉得第一个CONST类型应该算是C++的范畴吧..............
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fangege 2009-3-27 05:56
7
0
char  *  const  *(*next) ();

next 函数指针的指针
指向 一个 返回值为CHAR *的无参函数

那个const不知道干嘛的
游客
登录 | 注册 方可回帖
返回