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;
}