c語言如何實現函式過載
阿新 • • 發佈:2018-11-19
c語言如何實現函式過載
c語言中不允許有同名函式,因為編譯時函式命名是一樣的,不像c++會新增引數型別和返回型別作為函式編譯後的名稱,進而實現過載。如果要用c語言顯現函式過載,可通過以下方式來實現:
- 使用函式指標來實現,過載的函式不能使用同名稱,只是類似的實現了函式過載功能
- 過載函式使用可變引數,方式如開啟檔案open函式
- gcc有內建函式,程式使用編譯函式可以實現函式過載
示例如下:
#include<stdio.h> void func_int(void * a) { printf("%d\n",*(int*)a); //輸出int型別,注意 void * 轉化為int } void func_double(void * b) { printf("%.2f\n",*(double*)b); } typedef void (*ptr)(void *); //typedef申明一個函式指標 void c_func(ptr p,void *param) { p(param); //呼叫對應函式 } int main() { int a = 23; double b = 23.23; c_func(func_int,&a); c_func(func_double,&b); return 0; }