void (*(*(*(*p(void))[3])(void))(void))(void)是什么玩意?请详解...
发布网友
发布时间:2024-10-24 08:42
我来回答
共3个回答
热心网友
时间:6分钟前
你可以上网搜一下“C语言复杂声明”,有个“右左法则”可以用来分析这种复杂的声明。
从p开始,先向右看是(void),说明p是个无参函数,再向左看是*,说明p函数的返回类型是个指针。那它返回的是什么类型的指针呢?继续向右看。
右边是[3],左边是(*,说明是指向长度为3的数组的指针。因此p返回的类型是指向长度为3的数组的指针。那么这个长度为3的数组的元素类型又是什么呢?继续向右看。
右边是(void),左边是(*,所以这个数组的元素类型是无参函数的指针,函数的返回类型继续看。
右边是(void),左边是(*,所以函数的返回类型还是一个无参函数的指针,这个函数的返回类型继续看。
右边是(void),左边是void,所以函数的返回类型是void,函数无参。
综合起来,p是个无参函数,p的返回类型是个指针,指向一个长度为3的数组。这个长度为3的数组,其元素类型是函数指针,该函数指针指向一个返回类型为函数指针的无参函数,而这个无参函数的返回类型仍然是一个函数指针,这个新的函数指针类型,指向的是一个返回类型为void的无参函数。
热心网友
时间:6分钟前
我想说 出这个题的傻X 比谭浩强 还要谭浩强 ~~~~~~
热心网友
时间:8分钟前
四重指针这在哪看的,这什么跟什么吗,晕,你还是不用管了,这跟本就用不到