c++复杂声明

来源:互联网 发布:数据备份方式 编辑:程序博客网 时间:2024/05/19 06:38
void (*funcPtr)();

上面声明了一个指向函数的指针,当碰到这样一个比较复杂的声明时,最好的方法是从 中间开始和向外扩展

  • 从中间开始:即 从变量名开始
  • 像外扩展:即 先注意右边最近的项,已右括号结束,再注意左边的项,已左括号结束,再注意右边的项。。。

用上述方法来解析一下第一个声明:

  • 往右看:是右括号,结束
  • 往左看:funcPtr是个指针
  • 往左看:碰到左括号,结束
  • 往右看:指针指向一个函数,即:指向函数的指针
  • 向左看:函数的返回值类型是 void,即:指向返回值为 void 的函数

再看第二个例子:

void * (*(*fp1)(int))[10];
  • 往右看:是右括号,结束
  • 往左看:fp1 是个指针
  • 往左看:是左括号,结束
  • 往右看:fp1 指向一个 参数为 int 的函数(因为函数是 () 指示的,碰到了 ) 下一步就往左看)
  • 往左看:函数返回一个指针
  • 往左看:是左括号,结束
  • 往右看:指针指向一个 数组
  • 往左看:数组类型为 void *

即:fp1是一个函数指针,指向的函数 接收 int 为参数,返回一个指针,这个指针指向一个 10 个元素的数组,数组类型为 void *

参考资料

C++编程思想:P109-110

原创粉丝点击