int *f(); // //*f()是如何求值的,首先执行的是函数调用操作(因为()优先级高于*),因此 f 是一个返回值为指向整型的指针的函数 // //用于声明比那辆的表达式和普通的表达式在求值所使用的规则相同 int (*f)(); // //f 成为一个函数指针,这个函数返回一个 int 类型 int *(*f)(); // //f 成为一个函数指针,这个函数返回一个 int* 类型 //
//// int f[10]; // //// int f[]; // // //如果链接属性时 external 或者是作用函数的参数,即使它们在声明时未注明长度,也是合法的
//// int *f[10]; // //[]的优先级高, f 是一个数组,里面存着 int* //// int f()[10]; // //f是一个函数,返回值是int数组 错误!返回值只能是标量值
//// int f[10](); // //f是一个数组,元素类型是返回值为 int 类型的函数 错误!数组元素必须具有相同的长度,但不同的函数显然可能具有不同的长度 //// int (*f[10])(); // //左括号----- f 是一个元素为某种类型的指针的数组 元素的类型是函数指针,它指向的函数的返回值是 int 类型 //// int *(*f[])(); // //左括号----- f 是一个元素为某种类型的指针的数组 元素的类型是函数指针,它指向的函数的返回值是 int* 类型 //