簡體   English   中英

在C中調用Struct成員

[英]call Struct member in C

我對C有一個疑問,非常感謝那些願意分享知識的人。

當我閱讀代碼時,我迷上了一個結構,以一種從未見過的方式調用它的成員。 代碼基本上如下:
調用結構成員的代碼

struct struct_name gzw;
gzw.cb = otherfunct;

結構在下面定義

struct struct_name {
        int bela;
        unsigned int packet;
        int (*cb)(struct struct_name *fd, unsigned int packet2);
};

我有點困惑,因為據我所知,cb成員應該是一個帶有兩個參數的指針,不是嗎? 如何struct_name可以調用“ cb”,而不能(帶有2個參數的* cb)?

謝謝您的好意回復

cb是一個函數指針 您可以將其分配給指向原型(即參數編號,類型和返回類型)與功能指針類型相匹配的任何函數的指針。

然后,您可以通過函數指針調用該函數,如下所示:

gzw.cb(arg1, arg2);

這是一個函數指針。 基本上,您可以像分配其他任何值一樣向該結構分配一個函數。

是的, cb是一個函數指針,它帶有兩個參數並返回一個int。

說“ struct_name 調用 cb ”是不正確的,相反,該結構包含一個函數指針,可以使用gzw.cb(arg1, arg2);進行調用gzw.cb(arg1, arg2);

CB成員是一個函數指針,它接受兩個參數並返回和int。 您感到困惑的調用是分配指針值,因此不需要引用參數。 調用該函數時,將使用參數gzw.cb(p1,p2)

是的,你是對的。 成員變量cb是一個函數指針變量,采用struct struct_name*和一個整數作為輸入並返回一個int。

要調用該函數,您必須執行以下操作:

int ret = gzw.cb(&gzw, 10);

暫無
暫無

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

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