将一个结构体的地址传入给一个函数,这个函数将此结构体的地址传给另一个函数,为什么跑不起来,原因尽然是……

news/2024/11/13 9:37:09/

1.test函数

void testInitList(SL* sl) {//SL sl;//在创建结构体对象的时候就把这个结构体的地址定下来了,要改变其内部,需传递地址SQLinitList(sl);//无敌之精华,写入csdn
}void test_pushback() {SL sl;//SQLinitList(&sl);testInitList(&sl);SQLPushBack(&sl, 1);SQLPushBack(&sl, 2);SQLPushBack(&sl, 3);SQLPushBack(&sl, 4);SQLPushBack(&sl, 5);SQLPushBack(&sl, 6);SQLPushBack(&sl, 7);SQL_print(sl);
}

2.function函数

//1.初始化
void SQLinitList(SL* ps) {ps->a = NULL;ps->size = 0;ps->capacity = 0;
}
//2.头插尾插头删尾删
void SQLPushBack(SL* ps, SQDataType x) {if (ps->size == ps->capacity) {int newcapacity = ps->capacity == 0 ? 4 : ps->capacity * 2;SQDataType* tmp = (SQDataType*)realloc(ps->a, newcapacity * 2 * sizeof(SQDataType));if (tmp == NULL) {printf("realloc is error\n");exit(-1);}else {ps->a = tmp;ps->capacity = newcapacity;}}ps->a[ps->size] = x;ps->size++;
}

3.头文件函数

typedef int SQDataType;
typedef struct SeqList {SQDataType* a;int size;int capacity;
}SL;//1.初始化
void SQLinitList(SL* ps);
//2.头插尾插头删尾删
void SQLPushBack(SL* ps, SQDataType x);

这儿的test函数之间的

void testInitList(SL* sl) {

SQLinitList(sl);//无敌之精华,写入csdn
}

不能写成 SQLinitList(&sl);,因为这儿的sl已经是结构体对象的地址了,如果要在函数内将这个结构体的地址在传给其他地方,那么因该直接传sl,而不是&sl,因为&sl是地址的地址。

解决方法2:

跳过testInitList()函数,直接在test_pushback()函数中调用初始化函数完成初始化,

void test_pushback() {SL sl;SQLinitList(&sl);//testInitList(&sl);SQLPushBack(&sl, 1);SQLPushBack(&sl, 2);SQLPushBack(&sl, 3);SQLPushBack(&sl, 4);SQLPushBack(&sl, 5);SQLPushBack(&sl, 6);SQLPushBack(&sl, 7);SQL_print(sl);
}

http://www.ppmy.cn/news/1520412.html

相关文章

C++:泛型如何使用

在 C 中,泛型(或模板)是一种强大的编程机制,用于编写可以处理不同数据类型的通用代码。泛型通过模板实现,使得代码在编译时生成具体类型的实现。主要有两种类型的模板:函数模板 和 类模板。 函数模板 函数…

Spring Boot 多数据源配置(JPA)

目录 前言 前置环境 pom yml Entity Dao Config Controller 演示 前言 一般一个系统至少有一个数据源,用来持久化业务数据以及查询。单个数据源的系统很常见,在 Spring Boot 框架下配置也很简单。在约定大于配置这个思想下,只需要在…

4. 第一个3D案例—创建3D场景

入门Three.js的第一步,就是认识场景Scene、相机Camera、渲染器Renderer三个基本概念,接下来,咱们通过三小节课,大家演示“第一个3D案例”完成实现过程。 学习建议:只要你能把第一个3D案例搞明白,后面学习就…

Unity面向对象补全计划 之 List<T>与class(非基础)

C# & Unity 面向对象补全计划 泛型-CSDN博客 关于List,其本质就是C#封装好的一个数组,是一个很好用的轮子,所以并不需要什么特别说明 问题描述 假设我们有一个表示学生的类 Student,每个学生有姓名和年龄两个属性。我们需要创…

缓存分布式一致性问题

缓存一致性问题发生的原因,是在更新数据时数据库和缓存数据的不一致。我们要做到保证缓存的最终一致性。如果数据需要强一致性建议直接查询数据库。 双写模式 双写模式为先写数据库,在写缓存。 进来两个请求,先执行“请求1”的操作写入数据…

图论----最小生成树讲解与相关题解

目前已更新系列 当前--图论----最小生成树讲解与相关题解 滑动窗口系列算法总结与题解一 算法系列----并查集总结于相关题解 图论---dfs系列 差分与前缀和总结与对应题解(之前笔试真的很爱考) 数论---质数判断、质因子分解、质数筛(埃氏…

Golang 小项目(3)

Golang 小项目(3) 前言 本项目适合 Golang 初学者,通过简单的项目实践来加深对 Golang 的基本语法和 Web 开发的理解。 前往 torna.top 免费查阅 项目结构 D:. ├─ go.mod ├─ go.sum │ ├─cmd │ └─main │ main.go │ └─pkg├─config│ app.go│…

数据库系统 第36节 数据库镜像

数据库镜像(Database Mirroring)是一种在数据库系统中用于确保数据高可用性和灾难恢复的技术。在MySQL中,虽然它不像SQL Server那样直接支持数据库镜像,但可以通过复制(Replication)来实现类似的功能。MySQ…