再探指针与结构体

指针

指针是什么?

电脑内存单元中有许多编号被称为地址,也叫做指针

口头语中说的指针通常指指针变量,是用来存放地址的变量

指针和指针的类型

我们再看下面的操作

这里的int类型的pa指针代码运行时操作了4个字节的数据,而char类型的指针只操作了1个字节的数据

指针类型决定了指针在进行操作时他的权限有多大

指针加减整数

我们看看这段代码

这里的pa+1就跳过了4个字节,pc+1则是跳过了1个字节,说明了类型不同跳过的字节数也不同,-1也同理

野指针

野指针就可以类比成野狗,十分危险

野指针的成因

指针未初始化

指针的越界访问

这里误把for循环的条件写成了

指针指向的空间被释放

这里的num只是个局部变量,当test函数调用完成后num所处的空间就会被释放,但指针p还指向num原先的地址,这个地址不属于num了,这里的p就是野指针

如何规避野指针

指针初始化

小心指针越界

指针指向空间释放,及时置NULL

避免返回局部变量的地址

指针使用前检查有效性

指针运算

指针加减整数

我们可以通过指针加减整数来使指针产生偏移

还有这个

这里*vp++,是先解引用vp,然后将它赋值为0,因为++是后置的,所以赋值完成后才会++,vp才会指向下一个元素

这个vp则刚好相反,是先---,再进行解引用和赋值

写成这样也是能跑的

指针-指针

指针-指针就是计算指针之间的元素个数

两个指针相减的前提是:指针指向的同一块连续的空间

也可以用指针相减来模拟实现一下strlen函数

数组和指针

我们首先来看看下面的代码

这里的p就是指针变量,一级指针变量

pp就是二级指针

a的类型是int;p的类型是int*,这里的 * 则表示p是一个指针,前面的int的意思就是p指向的对象的类型是int;pp的类型是int**,*的意思就是pp是一个指针,int*则表示pp指向的对象的类型是int*

p里面存的是a的地址,pp里面存的是p的地址

指针数组

存放指针的数组

也能写成这样

结构体

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以使不同类型的变量。

结构的声明

结构体变量

这样创建出来的是全局变量

如果上面的是学生类型的话,s1,s2,s3,就是三个不同的学生

而我们一般是使用局部变量,就是s4,这里的s5也是全局变量

结构体的定义和初始化

也可以结构体里面嵌套结构体

或者我们想改数值,这里的age可以改,但是name改了就会报错

要想改name,就得使用strcpy函数

结构体传参和结构体成员访问

这个就属于结构体传参了

这里打印的时候就会用到结构体成员访问,就会用到 .

或者传址,当使用传址时访问结构体 成员就需要用到->

相对于传参,传址能节省空间,推荐传址。

基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制方法。通过结合数据驱动技术Koopman算子理论,将非线性系统动态近似为高维线性系统,进而利用递归神经网络(RNN)建模并实现系统行为的精确预测。文中详细阐述了模型构建流程、线性化策略及在预测控制中的集成应用,并提供了完整的Matlab代码实现,便于科研人员复现实验、优化算法并拓展至其他精密控制系统。该方法有效提升了纳米级定位系统的控制精度动态响应性能。; 适合人群:具备自动控制、机器学习或信号处理背景,熟悉Matlab编程,从事精密仪器控制、智能制造或先进控制算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①实现非线性动态系统的数据驱动线性化建模;②提升纳米定位平台的轨迹跟踪预测控制性能;③为高精度控制系统提供可复现的Koopman-RNN融合解决方案; 阅读建议:建议结合Matlab代码逐段理解算法实现细节,重点关注Koopman观测矩阵构造、RNN训练流程模型预测控制器(MPC)的集成方式,鼓励在实际硬件平台上验证并调整参数以适应具体应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值