簡體   English   中英

在 C 中用 function 指針設置結構字段

[英]Set struct field with function pointer in C

我在搞亂 C,我想模擬 class 的構造函數,但使用 C。我有一個包含兩個字段的結構,一個int和一個指向 function 的指針,就像這樣

typedef struct elem {
    int a;
    void (*initVal)(struct elem*);
} element;

function initVal如下

void initVal(struct elem* el) {
    el->a = 5;
}

這個 function 背后的主要思想是將結構本身的字段a設置為 5。主要是:

int main() {
    element a;
    (a.initVal)(&a);
    printf("%d\n", a.a);

    return 0;
}

我的目標是在主程序中打印5 ,但該程序拋出運行時錯誤。 這里有什么問題? 是否可以調用 function 指針來設置定義它的結構的字段? 希望這是清楚的。

您在此語句中使用了未初始化的指針

(a.initVal)(&a)

你需要寫

void initVal(struct elem* el) {
    el->a = 5;
}

//...

element a;
a.initVal = initVal;

a.initVal( &a );

或者

element a = { .initVal = initVal };
a.initVal( &a );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM