这家伙又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函数返回值不是报错了么

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

     

    评论
    解决 1 无用
    打赏 举报
查看更多回答(3条)

相关推荐 更多相似问题