[英]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.