打印
[牛人杂谈]

C语言的结构体里可以放函数指针

[复制链接]
399|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
734774645|  楼主 | 2024-3-5 17:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这在一些场景下很有用,比如实现类似于面向对象编程中的虚函数(通过函数指针来实现多态性)。下面是一个简单的例子:
#include <stdio.h>

// 定义一个函数指针类型,用于指向特定的函数签名
typedef void (*FunctionPtr)(void);

// 定义一个结构体,其中包含一个函数指针成员
struct MyStruct {
    FunctionPtr func_ptr;
};

// 定义一个函数,用于传递给结构体的函数指针成员
void function1() {
    printf("Function 1 called\n");
}

// 定义另一个函数
void function2() {
    printf("Function 2 called\n");
}

int main() {
    struct MyStruct obj1, obj2;

    // 将函数指针分配给结构体的函数指针成员
    obj1.func_ptr = &function1;
    obj2.func_ptr = &function2;

    // 通过结构体中的函数指针成员调用函数
    obj1.func_ptr();
    obj2.func_ptr();

    return 0;
}
在这个例子中,MyStruct结构体包含了一个名为func_ptr的函数指针成员。然后,在main()函数中,我们创建了两个结构体对象obj1和obj2,并将不同的函数指针分配给它们的func_ptr成员。最后,通过调用obj1.func_ptr()和obj2.func_ptr(),我们可以分别调用不同的函数。

使用特权

评论回复
沙发
dongnanxibei| | 2024-3-9 22:38 | 只看该作者
指针也是个变量,所以可以放。

使用特权

评论回复
板凳
dongnanxibei| | 2024-3-9 22:39 | 只看该作者
变量是否是普通数值还是作为指针,都是程序决定的。

使用特权

评论回复
地板
zhuomuniao110| | 2024-3-10 17:18 | 只看该作者
指针也是变量,所以可以存。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

199

主题

3488

帖子

14

粉丝