gpt4 book ai didi

c - C中函数指针在数据结构开发中的使用

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:06 25 4
gpt4 key购买 nike

我下学期有一个算法类(class),所以我开始学习 C,目的是提前制作一些数据结构以备不时之需。

当我了解函数指针时,我发现我可以将它们存储在 structs 中并为我的数据结构创建类似面向对象的用途。这是一个例子:

#include <stdio.h>


void insert(char * object)
{
printf("Adding %s to the data structure\n", object);
}


typedef struct data_structure {
char * obj;
void (*insert)(char * object);
} data_structure;


int main()
{
data_structure d;
d.insert = insert;

d.insert("bacon");

return 0;
}

但是这种程序在C语言学习的数据结构和算法范围内真的有用吗?或者它只是在数据结构上占用内存?

我发现其他帖子讨论函数指针,但没有一篇探讨这种方法。我认为这对一群好奇的学生可能有用:)

最佳答案

在过去,我确实看到过以这种方式构造的对象作为有效地表示 vtable 的函数指针集。通常,对于 vtable,您会添加一个额外的间接级别,以便所有具有相似特征的数据对象都指向同一个函数指针对象。如果有超过 1 个函数,这会降低每个数据对象的成本,但执行成本很小。

通过坚持数据的第一个成员是回调函数,它也可以用作组织和构造 function+voiddata 回调对象的轻量级方式。当然,您不能使用 c 定义继承的类,但您可以使用嵌套结构来达到相同的目的。

关于c - C中函数指针在数据结构开发中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53765016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com