在C中调用Struct成员

时间:2011-05-11 17:24:44

标签: c

我对C有疑问,会感谢那些愿意分享知识的人。

当我正在阅读代码时,我在一个结构中遇到了绊脚石,其成员以我以前从未见过的方式被调用。 代码基本如下:
用于调用struct成员的代码

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”,而不是(* cb有2个参数)?

感谢您的善意回复

5 个答案:

答案 0 :(得分:1)

cb函数指针。您可以将其分配给任何其原型(即参数编号,类型和返回类型)与函数指针类型匹配的函数。

然后可以通过函数指针调用该函数,如下:

gzw.cb(arg1, arg2);

答案 1 :(得分:0)

这是一个函数指针。基本上,您可以为结构分配一个函数,就像分配任何其他值一样。

答案 2 :(得分:0)

是的,cb是一个函数指针,它接受两个参数并返回一个int。

说“struct_name 调用 cb”是不正确的。相反,该结构包含一个函数指针,您可以使用gzw.cb(arg1, arg2);调用它。

答案 3 :(得分:0)

CB成员是一个函数指针,它接受两个参数并返回和int。您混淆的调用是指定指针值,因此不需要引用参数。调用该函数将使用参数gzw.cb(p1,p2)

答案 4 :(得分:0)

是的,你是对的。成员变量cb是一个函数指针变量,以struct struct_name*和整数作为输入并返回一个int。

要调用该函数,您必须执行以下操作:

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