Skip to content

复杂声明

case 1

cpp
void * ( * (*fp1)(int))[10];

fp1是一个指针,指向一个函数,这个函数的参数为int型,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个void*型指针。

case 2

cpp
float (*(* fp2)(int,int,int))(int);

fp2是一个指针,指向一个函数,这个函数的参数为3个int型,函数的返回值是一个指针,这个指针指向一个函数,这个函数的参数为int型,函数的返回值是float型。

case 3

cpp
int (* ( * fp3)())[10]();

fp3是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是一个指针,这个指针指向一个数组,这个数组有10个元素,每个元素是一个指针,指向一个函数,这个函数的参数为空,函数的返回值是int型。

have error: 'fp3' declared as array of functions of type 'int ()'

case 4

cpp
int (*s[10])(int)

函数指针数组,每个指针指向一个int func(int param)的函数

case 5

cpp
int id[sizeof(unsigned long)];

这个对吗?为什么?

正确 这个 sizeof是编译时运算符,编译时就确定了,可以看成和机器有关的常量。

吃好喝好 快乐地活下去