笔试面试中C/C++重要知识点整顿(不定期更新)1
C和C++语言中的优先级规则C语言中语言申明的优先级规则如下(后来分析的基础):A申明从它的第一种名字开始读取,然后按照优先级次序依次读取B优先级从高到低依次是B
1申明中被括号括起来的那部分B
2后缀操作符:括号()表达这是一种函数方括号[]表达这是一种数组B
3前缀操作符:星号*表达“指向……的指针”下面我们使用上述规则来分析如下例子(1)char*const*(*next)();(2)char*(*c[10])(int**p)一步步分析:先分析括号里面的内容,我们懂得C是一种数组,保留的是“…
的指针”然后根据规则B,要先分析后缀,得到指针是一种函数指针
该函数参数为P返回值为char*
最终得到:C是一种数组元素,它的元素类型是函数指针,其所指向的函数的返回值是一种指向char的指针
(3)void(*signal(intsig,void(*func)(int)))(int);从signal所在的括号开始提取:void(*signal())(int);首先signal后缀跟的是括号,我们得到signal是一种函数,然后得到前缀为*表达此函数返回的是一种”……指针”…………最终得到signal是一种函数,返回函数指针,函数所指向的指针接受一种int类型的参数并且返回void
然后我们看signal函数参数自身:void(*func)(int)表达func是一种函数指针,此指针指向的函数接受一种int参数,返回值是void
假如我们定义typedefvoid(*ptr_to_func)(int)则表达ptr_to_func是一种函数指针,该函数接受一种int参数,返回值为void那么上述函数可以写为ptr_to_funcsignal(intsig,ptr_to_func);表达signal是一种函数,接受参数为int