当前位置:主页 > 4k44com金明世家 >

void ((((p(void))[3])())是什么玩意?请详解送5分

发布日期:2019-08-29 07:26   来源:未知   阅读:

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部你可以上网搜一下“C语言复杂声明”,· www.447166.com特别是在去年最后的四个月,,有个“右左法则”可以用来分析这种复杂的声明。

  从p开始,先向右看是(void),说明p是个无参函数,再向左看是*,说明p函数的返回类型是个指针。那它返回的是什么类型的指针呢?继续向右看。

  右边是[3],左边是(*,说明是指向长度为3的数组的指针。因此p返回的类型是指向长度为3的数组的指针。那么这个长度为3的数组的元素类型又是什么呢?继续向右看。

  右边是(void),左边是(*,所以这个数组的元素类型是无参函数的指针,函数的返回类型继续看。

  右边是(void),左边是(*,所以函数的返回类型还是一个无参函数的指针,这个函数的返回类型继续看。

  右边是(void),左边是void,所以函数的返回类型是void,函数无参。

  综合起来,p是个无参函数,p的返回类型是个指针,指向一个长度为3的数组。这个长度为3的数组,其元素类型是函数指针,该函数指针指向一个返回类型为函数指针的无参函数,而这个无参函数的返回类型仍然是一个函数指针,这个新的函数指针类型,指向的是一个返回类型为void的无参函数。