3 回答

TA貢獻2021條經驗 獲得超8個贊
函數調用形式本身沒有好壞之分
任何函數代碼如果有錯誤都可能導致軟件出問題,甚至導致崩潰
c 里可以使用指針,函數指針
這就使程序可以更靈活
當 函數指針 做為函數的參數,傳遞給一個被調用函數,
被調用函數就可以通過這個指針調用外部的函數,這就形成了回調
windows程序中 WndProc 就是使用回調的典型形式
一般的程序中回調函數作用不是非常明顯,可以不使用這種形式
最主要的用途就是當函數不處在同一個文件當中,比如動態庫,要調用
其他程序中的函數就只有采用回調的形式
#include "stdio.h"
#include "conio.h"
int add(int a, int b);
int libfun(int (*pDis)(int a, int b));
int main(void)
{
int (*pfun)(int a, int b);
pfun = add;
libfun(pfun);
}
int add(int a, int b)
{
return a + b;
}
int libfun(int (*pDis)(int a, int b))
{
int a, b;
a = 1;
b = 2;
printf("%d", pDis(a, b));
}
現在這幾個函數是在同一個文件當中
假如
int libfun(int (*pDis)(int a, int b))
是一個庫中的函數,就只有使用回調了,通過函數指針參數將外部函數地址傳入
來實現調用
函數 add 的代碼作了修改,也不必改動庫的代碼,就可以正常實現調用
便于程序的維護和升級
- 3 回答
- 0 關注
- 836 瀏覽
添加回答
舉報