c語言中通過函式指標實現函式過載
轉自:http://blog.csdn.net/sing_sing/article/details/6109813
我們都知道過載是c++物件導向的特性。c語言中是不存在的。所謂過載簡單來說就是一個函式名可以實現不同的功能,要麼輸入引數不同或者引數個數不同,要麼返回型別不同。例如函式add(),在c++中可以輕易實現int,double等不同型別引數的相加功能,而在c語言中卻不能這樣實現。c語言中實現過載功能,或者準確來說是類似過載的功能,可以通過函式指標的方式來實現。下面為演示程式碼:
typedef struct _int_param {
int param1;
int param2;
}INT_PARAM;
typedef struct _double_param_ {
double param1;
double param2;
}DOUBLE_PARAM;
typedef void* (*ADDFUNC)(void*);
void* int_add_func(void* wParam)
{
INT_PARAM* lParam = (INT_PARAM*)wParam;
int res = lParam->param1 + lParam->param2;
return (void*)&res;
}
void* double_add_func(void* wParam)
{
DOUBLE_PARAM* lParam = (DOUBLE_PARAM*)wParam;
double res = lParam->param1 + lParam->param2;
return (void*)&res;
}
void* add_func(ADDFUNC f, void* wParam)
{
return f(wParam);
}
int test()
{
INT_PARAM val1 = {10, 20};
DOUBLE_PARAM val2 = {30.5, 40.5};
void* res1 = add_func(int_add_func, &val1);
int result1 = *((int*)res1);
void* res2 = add_func(double_add_func, &val2);
double result2 = *((double*)res2);
return 0;
}
相關文章
- C語言 函式指標C語言函式指標
- js實現函式過載JS函式
- C++函式過載C++函式
- C語言函式指標與回撥用函式C語言函式指標
- 【不在混淆的C】指標函式、函式指標、回撥函式指標函式
- [C++] 成員函式指標和函式指標C++函式指標
- C++ 函式過載,函式模板和函式模板過載,選擇哪一個?C++函式
- PHP中實現函式過載PHP函式
- javascript函式過載的實現JavaScript函式
- javascript如何實現函式過載JavaScript函式
- 指標函式 和 函式指標指標函式
- python高階函式和C語言函式指標Python函式C語言指標
- C語言函式指標基礎C語言函式指標
- C 語言中的 time 函式函式
- C語言中的abort函式C語言函式
- C++之函式過載C++函式
- C++的函式過載C++函式
- C語言中函式printf()和函式scanf()的用法C語言函式
- c++ 函式指標C++函式指標
- C++(函式指標)C++函式指標
- python中實現函式過載Python函式
- javascript模擬實現函式過載JavaScript函式
- PHP中實現函式過載薦PHP函式
- C語言函式指標與回撥函式使用方法C語言函式指標
- C++中函式指標與函式物件C++函式指標物件
- C/C++—— C++中函式重寫和函式過載C++函式
- C++ 過載運算子和過載函式C++函式
- C語言中qsort函式的用法C語言函式
- C 語言中返回字串函式的四種實現方法字串函式
- C++ 函式過載和模板C++函式
- C++的函式的過載C++函式
- 函式名/函式地址/函式指標函式指標
- 函式指標使用c++類成員函式函式指標C++
- 在 Python 中實現函式過載Python函式
- TypeScript 函式過載TypeScript函式
- JavaScript函式過載JavaScript函式
- 函式模板過載函式
- 宣告與函式、函式指標函式指標