结构体的函数指针-结构体的函数的指针问题

问题描述

结构体的函数的指针问题

我在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下出现的问题
定义结构体指针,内存空间分配问题

解决方案二:

代码好乱 不能贴图吗 看着头疼

时间: 2024-08-08 16:09:59

结构体的函数指针-结构体的函数的指针问题的相关文章

函数指针和数组指针的区别,函数指针在结构体中怎么实现排序?

问题描述 函数指针和数组指针的区别,函数指针在结构体中怎么实现排序? 求咨询下,结构体浮点数组的排序,多重条件用函数指针传参数给库函数怎么实现排序呢? 解决方案 参考:http://blog.csdn.net/lethic/article/details/7781203 解决方案二: 函数指针及结构体 解决方案三: 函数指针:指向函数入口的指针,为指向代码段的一个地址. 数组指针:指向数组的指针.

C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表本文由 arthinking 发表于315 天前 ⁄ itzhai.com原创文章 ⁄ C语言 ⁄ 评论数 3 ⁄ 被围观 1,775 views+   指针数组: 在一个数组中,如果它的元素全部都是指针

冒泡排序-关于结构体指针问题。什么时候在指针前面加*号,什么时候不加

问题描述 关于结构体指针问题.什么时候在指针前面加*号,什么时候不加 我在做一道对结构体数组,按姓名升序进行冒泡排序的题的时候有些不理解指针什么时候加"*"什么时候不加*. 下面上我的代码. 结构体定义 typedef struct array{ int a; char b; }Array; 为结构体赋值 Stu student[5] = { {"uioyi",'m',95,58}, {"asdf",'m',88,28}, {"cvb&

c 指针-C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误

问题描述 C语言 结构体指针字符 二进制文件写入和读取 指针字符输出错误 typedef struct s{ char *name; }student; /*将结构体读出并显示*/ int IsUsed(char str) { FILE *fp = fopen("test","rb"); student s; s.name = (char) malloc(sizeof(char)*20); fread(&s,sizeof(student),1,fp); wh

c++-怎么在一个结构体里调用本身结构体数组

问题描述 怎么在一个结构体里调用本身结构体数组 typedef struct XML_DATA{ struct XML_DATA DATA[10]; char MENU[10][256]; ezxml_t xml; char *txt; char *strAttr; char *file; };XML_DATA m_data[10]; 这样使用为什么会报错,应该怎么修改?谢谢大家帮忙看看咯. 解决方案 定义变量要使用:struct XML_DATA m_data[10];要不就要改结构体的定义,

详解Nginx的配置函数对于请求体的读取_nginx

nginx核心本身不会主动读取请求体,这个工作是交给请求处理阶段的模块来做,但是nginx核心提供了ngx_http_read_client_request_body()接口来读取请求体,另外还提供了一个丢弃请求体的接口-ngx_http_discard_request_body(),在请求执行的各个阶段中,任何一个阶段的模块如果对请求体感兴趣或者希望丢掉客户端发过来的请求体,可以分别调用这两个接口来完成.这两个接口是nginx核心提供的处理请求体的标准接口,如果希望配置文件中一些请求体相关的指

《PostgreSQL服务器编程》一一3.2 PL/pgSQL函数的结构

3.2 PL/pgSQL函数的结构 如果我们想运行一个PL/pgSQL函数,实际上并不需要太多元素.以下就是一个非常简单的例子: 前面这个函数显示了最少元素的PL / pgSQL函数.该函数为substring内置函数创建了一个别名mid.对于Microsoft SQL Server或者MySQL的开发者而言,这是一个非常合适的别名,并且他们可以弄明白mid函数的实现过程.同时,这个函数也阐述了最基础的参数传递策略.这些参数在函数中并未被命名而是通过从左至右的相对位置被访问的. PL / pgS

C语言中指针释放问题,函数free()的使用。

问题描述 C语言中指针释放问题,函数free()的使用. 各位大虾们,C语言中如果不是指向使用malloc,realloc.calloc动态申请的内存的指针,是不是就不需要free()释放该指针了呢? 比如说申请了一个指向结构体的指针, 或者是指向一个整型变量的指针.谢谢各位大虾. 解决方案 如果你没用*alloc *函数的话,你应该并没有申请内存,你只是定义了一个指针变量而已,当然就不用free释放了. 解决方案二: 你动态申请了内存,就必须要释放. 如果使用一个指针,指向一块已经存在内存,就

shared pool系列三:library cache结构/library cache object的结构

library cache结构/library cache object的结构-dump LibraryHandle Library cache结构 Library cache最主要的功能就是存放用户提交的SQL语句,SQL语句相关的解析树(解析树也就是对SQL语句中所涉及到的所有对象的展现)--->共享SQL区(shared SQL areas),私有SQL区(private SQLareas,如果配置了共享服务器),执行计划,用户提交的PL/SQL程序块(包括匿名程序块,存储过程,包,函数等

C语言之指针、数组和函数

基本解释 1.指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址):数组的本质则是一系列的变量. 2.数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变.指针可以随时指向任意类型的内存块,它的特征是"可变",所以我们常用指针来操作动态内存. 3.当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针. 问题:指针与数组 听说char a[]与char *a是一致的,是不是这样呢? 答案与分析: 指针和数组存在着一些本质的区别