1. 程式人生 > >c語言如何實現函式過載

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