C語言實現函數重載

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章