第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

請問能不能利用for,while,if等語句甚至構(gòu)造其他函數(shù)等方法 進(jìn)行地址賦值

請問能不能利用for,while,if等語句甚至構(gòu)造其他函數(shù)等方法 進(jìn)行地址賦值

C
弒天下 2023-04-20 19:15:06
【問題1】指針數(shù)組可以存放函數(shù)的地址嗎?【問題2】如果可以,數(shù)組指針類型是啥?是int *num[ ]還是chan *num[ ]還是其他類型?【問題3】如果可以,有木有簡單方法解決下面問題有100個函數(shù),HS1(),HS2(),HS3(),……,HS98(),HS99(),HS100()。還有1個指針數(shù)組num[100]來存放這100個函數(shù)的地址,要求將 HS1()的地址放到num(1)中, HS2()地址放到num(2)中, HS3()的地址放到num(3)中, 以此類推 直到 HS100()的地址放到num(100)當(dāng)然一個挨著一個的地址賦值是可以的,但那樣要100次才行,能不能利用for,while,if等語句甚至構(gòu)造其他函數(shù)等方法 進(jìn)行地址賦值?
查看完整描述

3 回答

?
蠱毒傳說

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個贊

#include "stdio.h"
void output(int x)
{
printf("%d\n",x);
}
void main()
{
void(*test[100])(int);//函數(shù)指針數(shù)組的定義,我試驗(yàn)的只能是固定大小的數(shù)組,動態(tài)數(shù)組不知道怎么弄
for (int i=0;i<100;i++)
{
test[i] = output;
(*test[i])(i);
}

}
這個程序的輸出是100行數(shù)字從0~99

 


查看完整回答
反對 回復(fù) 2023-04-23
?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個贊

1、數(shù)組里面可以存放函數(shù)地址,這就是傳說中的函數(shù)指針數(shù)組。
2、數(shù)組指針就是一個指針里面存放數(shù)組的首地址的指針,int (* num)[ ]是這種類型。
3、定義
typedef int (* a)(參數(shù)類型列表);//重定義函數(shù)名
a num[100]; 
int i ;
for(i = 1;i<=100;i++)
num[i] = HSi;

查看完整回答
反對 回復(fù) 2023-04-23
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個贊

這種情況,HS1(),HS2(),~ HS100() 這些函數(shù)的參數(shù)類型和返回值最好是完全相同的,這樣才能放到同一個數(shù)組中才能再次對其調(diào)用并使用。

舉個例子,下面是省略簡寫的100個函數(shù)在for循環(huán)中分別被調(diào)用后輸出內(nèi)容和返回值的處理方法,實(shí)際使用中可以參照這種方式進(jìn)行使用,真正一個一個賦值的方法應(yīng)該是不會用到的。

#include "stdio.h"

unsigned char HS1(unsigned char ucArg);
unsigned char HS2(unsigned char ucArg);
/* ………… */
unsigned char HS99(unsigned char ucArg);
unsigned char HS100(unsigned char ucArg);

unsigned char (*const wucFunctionPointer_tbl[])( unsigned char ) = {
HS1,
HS2,
/* ………… */
HS99,
HS100
};

void main(void)
{
unsigned char aucLoopCnt = 0;
unsigned char aucFuncReturn = 0;

for (aucLoopCnt = 0; aucLoopCnt < (sizeof(wucFunctionPointer_tbl)/sizeof(void*)); aucLoopCnt++)
{
aucFuncReturn = wucFunctionPointer_tbl[aucLoopCnt](aucLoopCnt);
printf("Function Return is %d\n", aucFuncReturn);
}
}

unsigned char HS1(unsigned char ucArg)
{
printf("This is HS1 Running: Arg is %d\n", ucArg);
return ucArg;
}

unsigned char HS2(unsigned char ucArg)
{
printf("This is HS2 Running: Arg is %d\n", ucArg);
return ucArg;
}

/* ………… */

unsigned char HS99(unsigned char ucArg)
{
printf("This is HS99 Running: Arg is %d\n", ucArg);
return ucArg;
}

unsigned char HS100(unsigned char ucArg)
{
printf("This is HS100 Running: Arg is %d\n", ucArg);
return ucArg;
}

 


查看完整回答
反對 回復(fù) 2023-04-23
  • 3 回答
  • 0 關(guān)注
  • 182 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號