顺时针/螺旋法则

2020-12-22 18:03:31

遵循三个简单步骤:从未知元素开始,沿螺旋/顺时针方向移动;遇到以下元素时,将其替换为相应的英语语句:

+ ------- + | +-+ | | ^ | | char * str [10]; ^ ^ | | | + --- + | + ----------- +

我们问自己一个问题:什么是str?我们从“ str'”开始沿顺时针方向螺旋移动。而我们看到的第一个字符是“ ['所以,这意味着我们有一个数组,所以...沿顺时针螺旋方向继续,我们遇到的下一个就是`*'所以,这意味着我们有了指针,所以...沿螺旋方向继续前进,我们看到行的结尾(“;'”),继续前进,我们得到的类型为“ char'”,所以...

+ -------------------- + | + --- + | | | +-+ | | | | ^ || | char *(* fp)(int,float *); ^ ^ ^ || | | | +-+ | | | + ----- + | + ------------------------ +

我们问自己一个问题:什么是fp?沿顺时针方向螺旋移动,我们看到的第一件事是`)'因此,fp在圆括号内,因此我们继续在圆括号内螺旋,看到的下一个字符是`*&#39 ;,所以...我们现在脱离括号并沿螺旋形顺时针方向继续,我们看到`(&#39 ;;因此,我们有一个函数,所以...``fp是指向传递int函数的指针还有一个指向floatreturning的指针...

然后以螺旋方式继续,然后看到`*'字符,所以...``fp是指向传递int的函数的指针和指向float的指针,将指针返回给...

以螺旋方式继续前进,我们看到`;#39 ;,但是我们还没有访问过alltokens,所以我们继续并最终进入`char'类型,所以...``fp是一个指针传递给int和指向float的指针的函数返回指向char''的函数

+ ----------------------------- + | + --- + | | + --- + | +-+ | | | ^ | | ^ || | void(* signal(int,void(* fp)(int)))(int); ^ ^ | ^ ^ || | | + ------ + | +-+ | | | + -------- + | + ---------------------------------- +

我们问自己一个问题:什么是“信号”?请注意,信号在括号内,因此我们必须首先解决该问题!沿顺时针方向移动,我们看到`(&#39 ;,所以我们有...嗯,我们可以在`fp'上使用相同的规则,所以... fp是什么?fp也是括号内的,所以继续看一个`*&#39 ;,所以...沿螺旋形顺时针方向继续,我们到达`(&#39 ;,所以...现在,我们继续走出函数括号,然后看到无效,所以...我们已经完成了fp的工作,所以让我们赶上`signal'吧,我们现在有了...``signal是一个传递int的函数和指向传递anint的函数的指针,该函数不返回任何(void)返回值。 ..

我们仍然在括号内,因此看到的下一个字符是`*&#39 ;,因此...``信号是传递int的函数和指向传递inint的函数的指针,该函数不返回任何值(void)返回指针。 ..

现在我们已经解决了括号中的项目,因此顺时针继续,然后看到另一个`(&#39 ;,所以...``信号是一个传递int的函数和指向传递inint的函数的指针,不返回任何内容(void)返回通过anint返回的函数的指针...

最后我们继续,剩下的只有单词'void&#39 ;,因此信号的最终完整定义是:``signal是一个传递int的函数和一个指向传递anint的函数的指针,该函数不返回任何值(void)返回一个指针传递给anint的函数,该函数不返回任何值(无效)''

const和volatile适用相同的规则。例如:这是怎么回事:最后:使用第122页上的K& R II中的示例来实践此规则。版权所有©1993,1994 David Anderson只要作者的名字和内容可以自由分发。通知被保留。