这家伙又emo了 2021-05-08 09:29 采纳率: 84.6%
浏览 78
已采纳

C语言问题!!!请问大佬为什么这种情况他提示数组的下标不同却还可以运行

#include <stdio.h>
char func1() 
{
    return 'a';
}
char func2() 
{
    return 'b';
}
char func3() 
{    return 'c';
}
char (*xarr[])()={func1,func2,func3};//xarr是一个数组
//这个数组有3个指向函数的指针,指针所指(返回)数据类型为字符型。
char (*((*x())[]))()
{
    return &xarr;
}
int main()
{
    printf("%c\n",((*(x()))[0])());//x是一个函数
    //这个函数返回值为指针,这个指针指向数组中的第一个元素
    //这个元素的返回值为这第一个函数的返回值
    return 0;
}

具体图片如下

 

  • 写回答

4条回答 默认 最新

  • 猫叔大鸭梨 2021-05-08 10:20
    关注
    #include <iostream>
    #include <stdio.h>
    char func1()
    {
    	return 'a';
    }
    char func2()
    {
    	return 'b';
    }
    char func3()
    {
    	return 'c';
    }
    char (*xarr[])() = { func1,func2,func3 };//xarr是一个数组
    //这个数组有3个指向函数的指针,指针所指(返回)数据类型为字符型。
    /*
    char (*((*x())[]))()
    {
    	return &xarr;
    }*/
    int main()
    {
    	printf("%c\n", (xarr[0])());//x是一个函数
    	//这个函数返回值为指针,这个指针指向数组中的第一个元素
    	//这个元素的返回值为这第一个函数的返回值
    
    	system("pause");
    	return 0;
    }

    那个x函数返回值不是报错了么

    还有就是为什么不直接调用。。。

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据