亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求助求助,具體是要求如下所示,是關于函數的復雜定義的問題!

求助求助,具體是要求如下所示,是關于函數的復雜定義的問題!

Cats萌萌 2021-07-25 21:17:13
我的任務是:1:定義一個數組,該數組是一個指針數組,該指針指向一個函數,再定義一個指向數組的指針2:給該指針數組元素賦值,指向對應函數(函數分別是U16 task1();到task5();)3:定義字程序U16 IntSwi();要求入口是前面定義的指向數組元素的指針(數組里放的是指向函數的指針) 算法是讓該指針自加加,然后對指針取值,就是調用相應的task函數,調完5次,退出。求 好心人 幫幫忙我不是學生。以前沒學過C語言?,F在接到的任務里需要完成這樣的工作。但是這個定義太煩了,也沒什么好理解的。就是C語言的規則而已。有人知道的,幫小弟搞定一下。888atao寫的跟我預想的差不多,不過請給main()之前的定義寫個注釋,尤其是第一句,有點懵。是不是該寫成typedef FUNC U16 (*FUNC)();多謝太清隱者 發一份給我,謝謝。[email protected].不勝感激。
查看完整描述

3 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

#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;
}



查看完整回答
反對 回復 2021-07-29
?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

/*下面的例子的判斷在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打開相關檢查就會提示這可能是緩沖溢出*/
}



查看完整回答
反對 回復 2021-07-29
  • 3 回答
  • 0 關注
  • 396 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號