问题描述
- 结构体的函数的指针问题
-
我在a.h中定义了结构体
typedef struct link_t{
int data;
struct link_t* prior;
struct link_t* next;
}Node_t,Link_t;typedef struct{
void (*destory_link)(Link_t head);
link_t (*creat_link)(int length);
Node_t* (*delete_node)(Node_t node);
Node_t (*add_node)(Node_t* node,int Pdata);
link_t* (*merge_link)(Link_t *head1,Link_t *head2);
}link_funs;
在a.c中赋值
const link_funs double_link = {
.creat_link = _creat,
.merge_link = _merge,
.add_node = _add,
.delete_node = _delete,
.destory_link = _destoryLink
};
在B.c中define
#define creat_link(num) double_link.creat_link(num)
#define add_node(node) double_link.add_node(node)
#define delete_node(node) double_link.delete_node(node)
#define destory_link(head) double_link.destory_link(head)
#define merge_link(head1,head2) double_link.merge_link(head1,head2)
在工程中只有double_link.destory_link(head)函数指向了定义的结构体。结果我观察发现。结构体中只有destory_link这个函数指针所指的函数的返回值是非指针的。其他几个的返回值都是指针类型的。故其他几个函数连接不上,不可使用。这是怎么回事?
解决方案
有关结构体中的指针问题
函数用参数为 结构体指针 在VC下出现的问题
定义结构体指针,内存空间分配问题
解决方案二:
代码好乱 不能贴图吗 看着头疼