求助求助,具体是要求如下所示,是关于函数的复杂定义的问题!

我的任务是:
1:定义一个数组,该数组是一个指针数组,该指针指向一个函数,再定义一个指向数组的指针
2:给该指针数组元素赋值,指向对应函数(函数分别是U16 task1();到task5();)
3:定义字程序U16 IntSwi();要求入口是前面定义的指向数组元素的指针(数组里放的是指向函数的指针) 算法是让该指针自加加,然后对指针取值,就是调用相应的task函数,调完5次,退出。
求 好心人 帮帮忙
我不是学生。以前没学过C语言。现在接到的任务里需要完成这样的工作。但是这个定义太烦了,也没什么好理解的。就是C语言的规则而已。有人知道的,帮小弟搞定一下。
888atao写的跟我预想的差不多,不过请给main()之前的定义写个注释,尤其是第一句,有点懵。是不是该写成
typedef FUNC U16 (*FUNC)();
多谢太清隐者 发一份给我,谢谢。shuiyeweizhi@126.com.不胜感激。

Cats萌萌
浏览 301回答 3
3回答

SMILET

#include <stdio.h>typedef int U16;typedef U16 (*func)();U16 task1(){printf("task1\n");return 0;}U16 task2(){printf("task2\n");return 0;}U16 task3(){printf("task3\n");return 0;}U16 task4(){printf("task4\n");return 0;}U16 task5(){printf("task5\n");return 0;}U16 IntSwi(func *p)//3:定义字程序U16 IntSwi();{int i;for(i=0;i<5;i++,p++){(*p)();}return 0;}int main(){func myfunc[5];//1:定义一个数组,该数组是一个指针数组,该指针指向一个函数;func *p=myfunc; //再定义一个指向数组的指针//2:给该指针数组元素赋值,指向对应函数(函数分别是U16 task1();到task5();)myfunc[0]=task1;myfunc[1]=task2;myfunc[2]=task3;myfunc[3]=task4;myfunc[4]=task5;IntSwi(p);return 0;}

饮歌长啸

/*下面的例子的判断在DVEC++里编译运行通过的*//*我随便定义的函数来用*/typedef unsigned short U16;U16 task1(){};。。。。。U16 task5(){};第一个:/*A 定义一个数组,该数组是一个指针数组,该指针指向一个函数*//*函数原型为void fun() 参数列表自己改*/void (*a[5/*大小这里改*/])(/*参数列表这里改*/);/*B 再定义一个指向数组的指针*/void (*(*b)[5/*大小这里改*/])(/*参数列表这里改*/); /*b=&a 这是正确的赋值*/第二个:a[0]=task1;.....a[4]=task5;第三个:靠,早点说这些定义的类型多处使用,那就应该typedef了第一个改:typedef void (*A[5/*大小这里改*/])(/*参数列表这里改*/);typedef void (*(*B)[5/*大小这里改*/])(/*参数列表这里改*/);第二个改:A tasks;tasks[0]=task1;.....tasks[4]=task5;第三个改:U16 IntSwi(B tasks){B[0][0]();B[0][1]();B[0][2]();B[0][3]();B[0][4]();/*如果编译器聪明,B[0][5]()就会给出警告,例如VC++2002打开相关检查就会提示这可能是缓冲溢出*/}
打开App,查看更多内容
随时随地看视频慕课网APP