如何通过螺旋法则示例详细解析C变量的判定过程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1628个文字,预计阅读时间需要7分钟。
前言:在C++中,一个标识符配合各种修饰符构成了各种定义,使标识符的含义一目了然。即使不需要详细分析,一眼就能看出其具体含义。
例如:`void (*signal)(int, void (*fp)(int))`
前言
C++ 中一个标识符配合着各种修饰界定符,使得标识符的本意不那么直观一眼就能看出,甚至需要仔细分析,才能知道该标识符的具体你含义。
比如:
void (*signal(int, void (*fp)(int)))(int);
其中 signal 是什么?
螺旋法则
对于如何进行变量的辩识,有个非官方的 “顺时针/螺旋法则(Clockwise/Spiral Rule)” 可用来帮助辩识。
该法则的内容,简单来说,为了搞清楚一个未知标识符的含义,我们可以:
1、从我们需要判定的标识符开始,顺时针画圈,遇到如下符号时,用对应的语义替换:
- [x] 或 [] => 容量为 x 的数组或数组
- (type1,type2...) => 接收 type1、type2... 的函数,返回值为(待定)
- * => 指向(类型待定)的指针
2、重复上面的步骤直到语句中所有符号都被遍历过。
本文共计1628个文字,预计阅读时间需要7分钟。
前言:在C++中,一个标识符配合各种修饰符构成了各种定义,使标识符的含义一目了然。即使不需要详细分析,一眼就能看出其具体含义。
例如:`void (*signal)(int, void (*fp)(int))`
前言
C++ 中一个标识符配合着各种修饰界定符,使得标识符的本意不那么直观一眼就能看出,甚至需要仔细分析,才能知道该标识符的具体你含义。
比如:
void (*signal(int, void (*fp)(int)))(int);
其中 signal 是什么?
螺旋法则
对于如何进行变量的辩识,有个非官方的 “顺时针/螺旋法则(Clockwise/Spiral Rule)” 可用来帮助辩识。
该法则的内容,简单来说,为了搞清楚一个未知标识符的含义,我们可以:
1、从我们需要判定的标识符开始,顺时针画圈,遇到如下符号时,用对应的语义替换:
- [x] 或 [] => 容量为 x 的数组或数组
- (type1,type2...) => 接收 type1、type2... 的函数,返回值为(待定)
- * => 指向(类型待定)的指针
2、重复上面的步骤直到语句中所有符号都被遍历过。

