用英文加优先级来解读C的声明

  • 比如:int ( * func_p ) ( double );
    • 首先着眼于标识符
      func_p is
    • 因为存在括号,(* func_p) 先被处理,这里着眼于*
      func_p is a pointer to
    • 解释后面的( ),这是用于函数的,参数是double
      func_p is a pointer to function(double) returning
    • 最后,解释数据类型修饰符int
      func_p is a pointer to function(double) returning int
    • 翻译成中文就是:
      fun_p是一个指向返回int的函数的指针

  • 再比如:double (*hoge)[3],翻译为:
    • hoge is a pointer to array(个数为3) of double
    • hoge 是一个指向double的数组(个数为3)的指针

  • 还有:int (*func_table[])(double)
    • func_table is an array of pointers to function(double) returning int
    • func_table 是一个指向返回int的函数的指针的数组。
原文地址:https://www.cnblogs.com/amghost/p/3572148.html