学习笔记(2)

这篇博客作者分享了学习线性表操作和STM32 SysTick配置的经验。文中解释了为何在某些线性表操作函数中使用指针参数,而在其他函数中直接使用线性表参数的原因。接着介绍了SysTick配置库函数的使用,以及两种编写SysTick延时函数的方法。最后,作者提到了在main函数中使用while(1){}的必要性。
摘要由CSDN通过智能技术生成

前言

有一个问题之前一直不明白,今天突然明白了。

问题

之前学线性表时,有建立链表、插入、删除、查找元素等操作。以下是函数原型。

InitList(*L):建立一个空的线性表L。
ListInsert(*L, i, e):在线性表L中的第i个位置插入新元素e。
ListDelete(*L, i, *e):删除线性表L中第i个位置元素,并用e返回其值。
LocateElem(L, e):在线性表L中查找与给定值e相等的元素,如果查找成功,返回该元素在表中序号表示成功;否则,返回0表示失败。

我们看先*L和L这两个参数,为什么一些函数用线性表的指针做参数,另一些函数直接用线性表本身做参数?

解答

我看到有一本书上是这样说的:当你传递一个参数给函数的时候,这个参数会不会在函数内被改动决定了使用什么参数形式。如果需要被改动,则需要传递指向这个参数的指针。如果不用被改动,可以直接传递这个参数。

看一下这个函数LocateElem(L, e),这个函数的功能是查找元素,查找过程不需要改动线性表L,所以直接传递线性表L本身,当然如果传递线性表L指针也是可以的。再看一下这个函数ListInsert(*L, i, e),这个函数的功能是在线性表中插入元素,需要在函数内改动线性表L,所以传递的是线性表L的指针。在这里如果直接传递线性表L的话,就不会对线性表有改动。如果不懂得话,建议再看一下C语言的形参和实参。

后续

最近又学习了Sys Tick,这里记录一下。

1、SysTick 配置库函数

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
 {
   
 // 不可能的重装载值,超出范围
 if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值