右左法则 转
来源:互联网 发布:电脑屏幕录制软件排行 编辑:程序博客网 时间:2024/06/03 02:12
C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的: 总之对声明进行分析,最根本的方法还是按优先级和结合性来类比替换,从那些最基本的声明进行类比,简化,从而进行理解。下面分析几个例子,来具体阐述如何使用这种方法。 #1:int* (*a[5])(int, char*); 首先看到标识符名a,"[]"优先级大于"*",a与"[5]"先结合。所以a是一个数组,这个数组有5个元素,每一个元素都是一个指针,指针指向"int* (int, char*)",很明显,指向的是一个函数,这个函数参数是"int, char*",返回值是"int*"。OK,结束了一个。:) #2:void (*b[10]) (void (*)()); b是一个数组,这个数组有10个元素,每一个元素都是一个指针,指针指向一个函数,函数参数是"void (*)()"【注:这也是一个函数指针, 参数为空,返回为void】,返回值是"void"。完毕! #3:int(*)() (*c)[9]; c是一个指针,指针指向一个数组,这个数组有9个元素,每一个元素都是"int(*)()"(也即一个函数指针,指向一个函数,这个函数的参数为空,返回值是int型)。
(*d)------指针; 例如对于上面的声明:int (*(*func)(int *))[5]; 可以这样分解:
typedef int (*PF)(int *); typedef PF (*PARRAY)[5]; typedef PARRAY (*FUNC)(int *); (*(void (*)())0)();------->这个呢? 再typedef化简下: |
- 右左法则 转
- (转)右左法则----复杂指针解析
- 右左法则
- 右左法则
- 右左法则
- 右左法则
- 右左法则
- 右左法则
- 右左法则
- 右左法则
- 右左法则
- “右左法则”[重要!!!]
- 右左法则
- “右左法则”
- 右左法则举例
- 右左法则
- c/c++ 右左法则
- C++ 的右左法则
- 小心传播Trojan-GameThief.Win32.OnLineGames.smoh的电子邮件
- CSDN中国IT技术指数报告 2008年7月 第一期 (4) 基础软件设施
- SPSS是什么?
- dreamweaver序列号
- 2008-8-1
- 右左法则 转
- 神秘的古埃及Pharaonic XP Of civilizations
- 探讨float类型的数值,为什么两个float不能直接相等
- sun.security.validator.ValidatorException: No trusted certificate found
- 三十后的程序员,出路在哪里
- 无线网络盈利模式
- 正则表达式
- java学习笔记3
- 开源的c++开发软件Code::Blocks