看聊天记录都学不会C语言?太菜了吧》(17)5分钟搞懂指针与多重指针

这篇博客通过生动的对话形式介绍了C语言中的指针基础知识,包括指针变量的创建、取地址和间接操作。作者以外卖小哥的比喻解释了指针如何存储和传递内存地址,以及如何使用*和&符号进行操作。此外,还讨论了二级指针(指向指针的指针)的概念,帮助初学者理解指针的深层次用法。附带代码示例辅助理解,适合C语言初学者入门学习。

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我,若你是真心学习可以送你书籍,指导你学习,给予你目标方向的学习路线,无套路,博客为证。

本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖了新手在学习中的一般问题。此系列将会持续更新,包括别的语言以及实战都将使用对话的方式进行教学,基础编程语言教学适用于零基础小白,之后实战课程也将会逐步更新。

若有想学习的内容可以在评论区留言,根据大家的要求持续更新。点赞过十万就算化成灰我也更新下一篇。(肯定不到,也会更的。)

有问题也可以在评论区留言,也可以私聊我加我好友共同交流一起进步~

喜欢内容欢迎关注我、评论、点赞、收藏,这对我很重要,谢谢~


由于部分粉丝要求想要学python,就更了这个系列,我就算是生产队的驴、化成灰我C语言和python都一周6篇打底。可以关注我加我好友提你们想学的内容哟~

目录

《看聊天记录都学不会C语言?太菜了吧》(22)(必懂!题解 1-100 内素数)素数原来是质数!为什么你不早说!——(必懂!题解)求素数

《看聊天记录都学不会C语言?太菜了吧》(21)(必懂!题解冒泡排序)在现实生活中,打擂台比赛争名次竟用的是冒泡排序?——(必懂!题解)冒泡必懂

《看聊天记录都学不会C语言?太菜了吧》(20)(必懂!题解指定天数)我能知道2000年后的这个月一共有几天——(必懂!题解)我能知道2000年后的这个月一共有几天

《看聊天记录都学不会C语言?太菜了吧》(19)巩固开始,数字1、2、3、4能够组成多少个 3 位数的不同的排列——巩固1

《看聊天记录都学不会C语言?太菜了吧》(18)2分钟搞结构体——结构体

看聊天记录都学不会C语言?太菜了吧》(17)5分钟搞懂指针与多重指针——指针与多重指针

《看聊天记录都学不会C语言?太菜了吧》(16)我一直以为校花很漂亮,直到我叫了她一声…——生命空间、命名规则

《看聊天记录都学不会C语言?太菜了吧》(15)你学了一节课的函数我5分钟搞定了,还很熟——自定义函数传参、返回值

《看聊天记录都学不会C语言?太菜了吧》(14)这么神奇?我写了20行代码竟然一行就可以搞定?——自定义函数

《看聊天记录都学不会C语言?太菜了吧》(13)(9*9 乘法表)寻找电脑中的盲盒彩蛋——for 循环与循环嵌套 九九乘法表

《看聊天记录都学不会C语言?太菜了吧》(12)循环有多容易?你看一眼就怀…——循环

《看聊天记录都学不会C语言?太菜了吧》(11)2分钟领悟数组——数组

《看聊天记录都学不会C语言?太菜了吧》(10)程序媛聪明绝顶了——逻辑与运算符

《看聊天记录都学不会C语言?太菜了吧》(9)老公饼真的有老公送?——字符数组

《看聊天记录都学不会C语言?太菜了吧》(8)牛郎和织女竟有一个孩子?——多条件if

《看聊天记录都学不会C语言?太菜了吧(7)下一篇文章告诉你牛郎是谁——if逻辑判断

《看聊天记录都学不会C语言?太菜了吧(6)以前跟我说编程很难的给我站出来——浮点数及变量运算

《看聊天记录都学不会C语言?太菜了吧(5)打了一把游戏我学会了一个编程知识?——变量输出及占位符

《看聊天记录都学不会C语言?太菜了吧(4)原来我早就会编程了——变量

《看聊天记录都学不会C语言?太菜了吧(3)代码都在谈恋爱难道你不知道?——头文件及标点

《看聊天记录都学不会C语言?太菜了吧(2)我说编程很容易你们不服?——Devc使用及HelloWorld

《看聊天记录都学不会C语言?太菜了吧(1)我在大佬群里问基础问题没人理?——学习建议


我的其它教程

教程点击进去将会有目录

《看聊天记录都学不会Python到游戏实战?太菜了吧》(1)加载Python神器!亮剑!

《看聊天记录都学不会C#?太菜了吧》(1)从今天开始我是一个游戏开发者

你去约个会,你零基础的同学就学完C语言知识点过完了

【小白进】大佬们学习为什么简单?小白该如何学习?学历不高如何找工作?副业很好赚?了解后少走弯路


作者简介

作者名:1_bit

简介:CSDN博客专家,2020年博客之星TOP5,蓝桥签约作者。15-16年曾在网上直播,带领一批程序小白走上程序员之路。欢迎各位小白加我咨询我相关信息,迷茫的你会找到答案。

博客地址:https://i1bit.blog.csdn.net


🐰小C:小媛,这节课我介绍个外卖小哥给你认识怎么样?

👸小媛:哈?你想搞事?

🐰小C:我就是想给你介绍认识,我觉得你肯定很喜欢的。

👸小媛:你是不是想说他很帅?

🐰小C:帅不帅我不懂,主要是能干事。

👸小媛:唔…那行吧。

🐰小C:那现在打开电脑吧。

👸小媛:为啥要打开电脑?不是要介绍外卖小哥给我的吗?

🐰小C:我说的是C语言中的一个知识点呀,你在想什么。

👸小媛:…

🐰小C:我说的这个知识点叫做指针,可是有很大用处的哟。

👸小媛:指针?我听说很难,但是又很有用。

🐰小C:嗯,在这里我就告诉你基础用法,先学会怎么用就可以了。

👸小媛:所以你说的外卖小哥是他?

🐰小C:对呀,就是他呢。

👸小媛:我怎么觉得你在给我介绍一个工具人,然后告诉我怎么样去用这个工具人,让他开心我也开心。

🐰小C:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,你真是万事皆可拟人化。

👸小媛:不不不,是你开的头,不能怪我。

🐰小C:好了,我们开始回归正题吧。

👸小媛:我也不跟你闹了。

🐰小C:指针呢,其实你可以先当作他是一个跑腿的,你可以给他一个地址,然后让他帮你把内容存过去,是不是很像外卖小哥?

👸小媛:所以该怎么用呢?

🐰小C:你看下面的代码。

#include<stdio.h>
void main(){
	int *p;
	int a=10;
	p=&a;
}

👸小媛:我只能说我发现了多了个 * 号和一个 & 是我不会的。

🐰小C:这两个字符正是最开始学习指针的关键,代码 int *p; 就表示创建了一个整型指针,名字叫做 p,简单吧?

👸小媛:创建是挺简单的,然后呢,请继续往下讲。

🐰小C:之后创建了一个变量 a,里面存储的值是10,随后 p=&a中 &号表示什么?

👸小媛:我怎么知道?

🐰小C:你还记得最开始使用 scanf 的时候 & 是用来干啥的吗?

👸小媛:取地址?

🐰小C:是的,在这 p=&a 表示取到变量 a的地址赋值给指针,这个时候这个指针变量 p 就等于是你这个变量 a 的代理人了,如果你想对变量 a 操作直接使用 p 就可以。

👸小媛:你的意思是赋值和取值这两个操作?

🐰小C:是的,那你懂怎么写吗?

👸小媛:我感觉有坑,不过我得试试,是不是这样。

p=10;

🐰小C:哈哈哈,不是的,指针有另外的写法哟。

👸小媛:我就知道,你赶紧说吧。

🐰小C:你看下面的代码。

#include<stdio.h>
void main(){
	int *p;
	int a=10;
	p=&a;
	printf("a 变量存储的值是 %d \n",a);
	*p=20;
	printf("a 变量存储的值是 %d \n",a);
}

👸小媛:咦?你的意思是说,如果要操作指针变量 p 需要在前面加一个 * 号才能够间接对变量 a 进行操作?

🐰小C:是的,* 号叫做取值符号,使用 * 号就会操作指针 p 所指向的地址,因为我们在之前使用了 & 符号对变量 a 进行取地址,那么使用 * 号就会对这个变量地址的内容进行更改。

👸小媛:奥,我懂了,我运行了一下,果然值发生了改变。

🐰小C:指针的基本用法不难吧?

👸小媛:哈哈哈,基础用法挺好记的。

🐰小C:我想问你一个问题,你知道二手房东是指什么吗?

👸小媛:就是租房的时候,那个人不是房东,而是转租的。

🐰小C:对的呢,在指针里面也有二手跑腿的,叫做指向指针的指针。

👸小媛:什么鬼?

🐰小C:给你看一个示例。

#include<stdio.h>
void main(){
    int a=10;
    int *p,**p1;
    p=&a;
    p1=&p;
    printf("%d\n",**p1);
}

👸小媛:我感觉我脑子有点糊了。

🐰小C:哈哈哈,你看代码中 *p 就是正常的指针,**p1 就表示这是一个指向指针的指针。*p 是指向变量,而 **p1 就是表示指向指针。其实指针也是一个变量,他也有一个地址,**p1 就表示他讲会指向一个指针,而指向的那个指针则会指向一个变量,操作 **p1就等于操作那个最终指向的变量。

👸小媛:好像明白了,请继续说。

🐰小C:你可以看代码中,使用一个 * 号的指针 p 指向了一个变量 p=&a 随后使用两个 * 号的指针指向了一个指针 p,写作 p1=&p ,这个时候我们使用两个取地址符 **p1 显示取值的内容结果就是如下。

👸小媛:唔,明白了。

🐰小C:那我问你,如果我需要一个指针,指向一个指针,该指针又指向另外一个指针,那这个指针需要使用多少个 * 号?

👸小媛:哈哈哈,又增加一个吧?因为第一个指针用一个 *,第二个指针用两个 *,那么第三个指针不会是使用三个 *吧?

🐰小C:对的,你看看下面。

#include<stdio.h>
void main(){
    int a=10;
    int *p,**p1,***p2;
    p=&a;
    p1=&p;
    p2=&p1;
    printf("%d\n",***p2);
}

👸小媛:哈哈哈,其实就是无限套娃了,懂了,跟之前的都一样,只是多了个 * 号,结果都是对的。

🐰小C:是的,你先去自己练习一下吧。

基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)内容概要:本文介绍了基于实时迭代的数值鲁棒非线性模型预测控制(NMPC)双模稳定预测模型的研究Matlab代码实现,重点在于通过数值方法提升NMPC在动态系统中的鲁棒性稳定性。文中结合实时迭代机制,构建了能够应对系统不确定性外部扰动的双模预测控制框架,并利用Matlab进行仿真验证,展示了该模型在复杂非线性系统控制中的有效性实用性。同时,文档列举了大量相关的科研方向技术应用案例,涵盖优化调度、路径规划、电力系统管理、信号处理等多个领域,体现了该方法的广泛适用性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事自动化、电气工程、智能制造等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于解决非线性动态系统的实时控制问题,如机器人控制、无人机路径跟踪、微电网能量管理等;②帮助科研人员复现论文算法,开展NMPC相关创新研究;③为复杂系统提供高精度、强鲁棒性的预测控制解决方案。; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,重点关注NMPC的实时迭代机制双模稳定设计原理,并参考文档中列出的相关案例拓展应用场景,同时可借助网盘资源获取完整代码数据支持。
UWB-IMU、UWB定位对比研究(Matlab代码实现)内容概要:本文介绍了名为《UWB-IMU、UWB定位对比研究(Matlab代码实现)》的技术文档,重点围绕超宽带(UWB)惯性测量单元(IMU)融合定位技术展开,通过Matlab代码实现对两种定位方式的性能进行对比分析。文中详细阐述了UWB单独定位UWB-IMU融合定位的原理、算法设计及仿真实现过程,利用多传感器数据融合策略提升定位精度稳定性,尤其在复杂环境中减少信号遮挡和漂移误差的影响。研究内容包括系统建模、数据预处理、滤波算法(如扩展卡尔曼滤波EKF)的应用以及定位结果的可视化误差分析。; 适合人群:具备一定信号处理、导航定位或传感器融合基础知识的研究生、科研人员及从事物联网、无人驾驶、机器人等领域的工程技术人员。; 使用场景及目标:①用于高精度室内定位系统的设计优化,如智能仓储、无人机导航、工业巡检等;②帮助理解多源传感器融合的基本原理实现方法,掌握UWBIMU互补优势的技术路径;③为相关科研项目或毕业设计提供可复现的Matlab代码参考实验验证平台。; 阅读建议:建议读者结合Matlab代码逐段理解算法实现细节,重点关注数据融合策略滤波算法部分,同时可通过修改参数或引入实际采集数据进行扩展实验,以加深对定位系统性能影响因素的理解。
本系统基于MATLAB平台开发,适用于2014a、2019b及2024b等多个软件版本,并提供了可直接执行的示例数据集。代码采用模块化设计,关键参数均可灵活调整,程序结构逻辑分明且附有详细说明注释。主要面向计算机科、电子信息工程、数等相关专业的高校生,适用于课程实验、综合作业及位论文等教科研场景。 水声通信是一种借助水下声波实现信息传输的技术。近年来,多输入多输出(MIMO)结构正交频分复用(OFDM)机制被逐步整合到水声通信体系中,显著增强了水下信息传输的容量稳健性。MIMO配置通过多天线收发实现空间维度上的信号复用,从而提升频谱使用效率;OFDM方案则能够有效克服水下信道中的频率选择性衰减问题,保障信号在复杂传播环境中的可靠送达。 本系统以MATLAB为仿真环境,该工具在工程计算、信号分析通信模拟等领域具备广泛的应用基础。用户可根据自身安装的MATLAB版本选择相应程序文件。随附的案例数据便于快速验证系统功能性能表现。代码设计注重可读性可修改性,采用参数驱动方式,重要变量均设有明确注释,便于理解后续调整。因此,该系统特别适合高等院校相关专业生用于课程实践、专题研究或毕业设计等术训练环节。 借助该仿真平台,习者可深入探究水声通信的基础理论及其关键技术,具体掌握MIMOOFDM技术在水声环境中的协同工作机制。同时,系统具备良好的交互界面可扩展架构,用户可在现有框架基础上进行功能拓展或算法改进,以适应更复杂的科研课题或工程应用需求。整体而言,该系统为一套功能完整、操作友好、适应面广的水声通信教科研辅助工具。 资源来源于网络分享,仅用于习交流使用,请勿用于商业,如有侵权请联系我删除!
数据结构部分 -- 一、栈和队列 Stack && Queue 栈 - 结构图 alt 队列 - 结构图 alt 双端队列 - 结构图 alt 二、 链表 Linked List 单链表 - 结构图 alt 单项循环链表 - 结构图 alt 双向链表 - 结构图 alt 三、 树 基础定义及相关性质内容 - 结构图 alt - 另外可以参考浙江大数据结构课程中关于遍历方式的图,讲的十分详细 alt 使用链表实现二叉树 二叉查找树 - 非空左子树的所有键值小于根节点的键值 - 非空右子树的所有键值大于根节点的键值 - 左右子树都是二叉查找树 补充 - 完全二叉树 - 如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。 - 满二叉树 - 如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。 代码下载地址: https://pan.quark.cn/s/b48377ea3e78 四、 堆 Heap 堆满足的条件 - 必须是完全二叉树 - 各个父节点必须大于或者小于左右节点,其中最顶层的根结点必须是最大或者最小的 实现方式及条件 - 使用数组实现二叉堆,例如下图的最大堆,在数组中使用[0,100,90,85,80,30,60,50,55]存储,注意上述第一个元素0仅仅是做占位; - 设节点位置为x,则左节点位置为2x,右节点在2x+1;已知叶子节点x,根节点为x//2; - 举例说明: - 100为根节点(位置为1),则左节点位置为2,即90,右节点位置为3,即85; - 30为子节点(位置为5),则根节点为(5//2=2),即90; 根据上述条件,我们可以绘制出堆的两种形式 - 最大堆及实现 al...
评论 40
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1_bit

你的余额交给我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值