void (*(*(*(*p(void))[3])(void))(void))(void)是什么玩意?请详解,送5分
3个回答
展开全部
你可以上网搜一下“C语言复杂声明”,有个“右左法则”可以用来分析这种复杂的声明。
从p开始,先向右看是(void),说明p是个无参函数,再向左看是*,说明p函数的返回类型是个指针。那它返回的是什么类型的指针呢?继续向右看。
右边是[3],左边是(*,说明是指向长度为3的数组的指针。因此p返回的类型是指向长度为3的数组的指针。那么这个长度为3的数组的元素类型又是什么呢?继续向右看。
右边是(void),左边是(*,所以这个数组的元素类型是无参函数的指针,函数的返回类型继续看。
右边是(void),左边是(*,所以函数的返回类型还是一个无参函数的指针,这个函数的返回类型继续看。
右边是(void),左边是void,所以函数的返回类型是void,函数无参。
综合起来,p是个无参函数,p的返回类型是个指针,指向一个长度为3的数组。这个长度为3的数组,其元素类型是函数指针,该函数指针指向一个返回类型为函数指针的无参函数,而这个无参函数的返回类型仍然是一个函数指针,这个新的函数指针类型,指向的是一个返回类型为void的无参函数。
从p开始,先向右看是(void),说明p是个无参函数,再向左看是*,说明p函数的返回类型是个指针。那它返回的是什么类型的指针呢?继续向右看。
右边是[3],左边是(*,说明是指向长度为3的数组的指针。因此p返回的类型是指向长度为3的数组的指针。那么这个长度为3的数组的元素类型又是什么呢?继续向右看。
右边是(void),左边是(*,所以这个数组的元素类型是无参函数的指针,函数的返回类型继续看。
右边是(void),左边是(*,所以函数的返回类型还是一个无参函数的指针,这个函数的返回类型继续看。
右边是(void),左边是void,所以函数的返回类型是void,函数无参。
综合起来,p是个无参函数,p的返回类型是个指针,指向一个长度为3的数组。这个长度为3的数组,其元素类型是函数指针,该函数指针指向一个返回类型为函数指针的无参函数,而这个无参函数的返回类型仍然是一个函数指针,这个新的函数指针类型,指向的是一个返回类型为void的无参函数。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询