結構體函數作用及示例

一、作用

    1. 提高代碼閱讀性

    2. 分類管理函數及部分屬性

    3. 偏向於c++的面向對象思維

二、示例

#include<stdio.h>
#include<stdlib.h>

/*structure declare*/
struct str_func{
    int a;
    int b;
    int (*add)(int a, int b);
    int (*sub)(int a, int b);
    int (*compare)(int a, int b);
};

int add(int a, int b){
    return a+b;
}

int sub(int a, int b){
    return a - b;
}

int compare(int a, int b){
    if (a>b)
        return a;
    else 
        return b;
}

/*create a structure and init*/
struct str_func test = {
    .a = 5,
    .b = 7,
    .add = add,              //function pointer point to function
    .sub = sub,
    .compare = compare,
};

int main(){
    if (test.compare)
        printf("a b max = %d\n",(test.compare(test.a,test.b)));
    if (test.compare)
        printf("a add b = %d\n",(test.add(test.a,test.b)));
    if (test.compare)
        printf("a sub b = %d\n",(test.sub(test.a,test.b)));
    return 0;
}

編譯及運行結果:

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