1
有沒有辦法將func1的所有地址獲得到func4,以便我可以在for循環中使用它們來初始化我的菜單?我有一種感覺,這可能是某種宏觀欺騙。我已經通過谷歌和SO看了,但我沒有找到任何幫助。如何使用循環初始化指向具有函數的指針數組
...
void func1(void) { printf("func1\n"); }
void func2(void) { printf("func2\n"); }
void func3(void) { printf("func3\n"); }
void func4(void) { printf("func4\n"); }
int main(int argc, char** argv)
{
int num=0;
printf("Scanf: 0 - 4\n");
scanf(" %d", &num);
void (*menu[])(void) = {func1,
func2,
func3,
func4};
if(num <= 4) (*menu[num-1])();
...
問題出在哪裏?你的代碼看起來或多或少。 –
用參數*聲明函數指針類型*。創建這個函數指針類型的數組。迭代數組並傳遞特定於迭代的參數(例如,帶有數字的字符串)。利潤。順便說一句,爲什麼不只是使用不同參數的* single *函數呢? –
@MichaelWalz - 這是沒有問題的,我很好奇,如果由於某種原因,我有一個100層的功能一樣,如果當時我能夠使用一個循環來初始化我的菜單排列,而不是手工編寫各功能命名 –