嵌入式-C语言-江科大-指针的详解与应用

文章目录

  • 一:计算机存储机制
  • 二:定义指针
  • 三:指针的操作
  • 四:数组与指针
  • 五:指针的应用
    • 道友:最清晰的脚印,踩在最泥泞的道路上。

推荐视频配合我的笔记使用
[C语言] 指针的详解与应用-理论结合实践,真正理解指针!

一:计算机存储机制

在这里插入图片描述

1.地址是房间号,内存是房间
2.一个字节一个地址
在这里插入图片描述
3.跨字节分配模式
①、小端模式(常见):把数据的小端放在地址的低位
(0x12345678)从左往右是大端到小端
②、大端模式:把数据的大端放在地址的低位

在这里插入图片描述4.数组按顺序存,数组必须是连续的线性空间
在这里插入图片描述

二:定义指针

在这里插入图片描述1.指针不是指针变量,指针是地址,指针变量是用来存放地址的变量

2.sizeof函数的返回值是输入变量的字节
在这里插入图片描述

三:指针的操作

在这里插入图片描述

  1. 不同写法,但p代表的意思一样
char a = 0x66;
 char*  p ;
 p = &a;
char a = 0x66;
 char*  p = &a;

如果把内存看作一个仓库的话,0x66相当于存放在房间中的物品,char*/int类型的p相当于房间号, char p = &a相当于通过房间号找到房间并把物品取出

2.测试p++,使指针向下移动一个数据宽度
①:int 数据类型占4个字节,%x表示16进制,%d就是十进制,%c输出字符
在这里插入图片描述②:char数据类型占1个字节

8+5=13,8 9 A B C D
在这里插入图片描述

四:数组与指针

在这里插入图片描述1.a就是指针变量,不用加&
2.数据类型则需要在变量名前加“&”,结构体数组等则直接存放变量名(变量名即首地址)
3.

*(P+1//指针的正常加一
 *P+1   //先引用指针再进行加一运算

4.char c[] = {0x33,0x34,0x35};
三个元素,每个占四个字节

5.指针需要给确定的值,不然会变成野指针(有随机性)
在这里插入图片描述6.一级指针存放的是变量的地址,二级指针存放的是一级指针的地址

五:指针的应用

在这里插入图片描述

1.值传递:子函数里面的动作不影响主函数,目的是防止子函数影响主函数

主函数会开辟一块空间,当子函数在调用时同样会开辟一样的空间,就是有两份一模一样的空间,浪费内存

址传递(指针传递):子函数形参是指针,会影响主函数,当数据量太大时,只能妥协了允许子函数通过指针修改主函数,谁让你为了省内存。

2.我想省空间,又不想子函数动主函数的数据,要加一个const关键字
推荐文章《const关键字-指针常量和常量指针》
在这里插入图片描述

加了const,址传递,子函数能调用主函数的同时,空间不用复制,主函数也不会被子函数修改,这样子编译器会出错,不让执行。
整体空间只多了子函数的数据类型(int* arry),如上图,总空间只增加了8位,

注意:求数组长度用length=sizeof(a)/sizeof(a[0])
推荐文章:《sizeof()使用》

3.比如子函数想调用int a[],如果不想用指针,那么要把int a[]写成全局变量,坏处就是数据的耦合性不好,封装不了。

4.句柄:大纸箱里放小纸箱,小纸箱里面放快递标签
在这里插入图片描述5、句柄相当于电脑桌面的快捷方式软件图标,一个传送阵

在这里插入图片描述6.用c语言在生成文件,并写入内容,把字符A,写入到文件中,这个test.txt文件中里面内容是字符‘A’
在这里插入图片描述
7.区分
fgetc(f) :文件函数中,获取char型数据
fgets(s,5,f):文件函数中,获取string数据

在这里插入图片描述在这里插入图片描述8.打印单片机ID号
在这里插入图片描述

在这里插入图片描述9.最后五分钟,等你评论区补充

道友:最清晰的脚印,踩在最泥泞的道路上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/304743.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flask修改Response Headers中的Server值

Headers中的Server会暴露出Python版本,导致的结果就是方便被渗透快速定位Python版本后找到对应版本的漏洞,因此导致网络安全问题 伪方法: 像这个马上就暴露出Python版本,如何解决这个网络上有说直接用response.headers.remove(Ser…

Windows内存管理(二):内存架构 浅谈一二

《Windows内存管理(一):Windows性能监视器(PerfMon)》 Windows内存管理是一个复杂的主题,涉及多个层次和组件。以下是一个分层的概述。 1、虚拟内存管理 Windows使用虚拟内存来给每个进程提供一个看似连续的内存空间&#xff0c…

Java学习笔记-day01-Flowable工作流入门

课程来源B站大佬波哥的课程 本文仅做笔记,课件需要的联系B站大佬获取 0.前置 相关话术 流程定义(Process Definition): 描述业务流程的定义,通常使用BPMN(Business Process Model and Notation&#xff09…

没有货源是不是就没办法在家做抖店?打包发货怎么完成?解答如下

我是王路飞。 有人问了我一个问题:无货源模式的抖店,自己一个人在家里做不了是吧?毕竟打包发货这些问题怎么解决呢? 店铺要是发货不及时被平台罚款怎么办?产品有质量问题怎么解决呢?店铺一直不出单怎么办…

并发程序设计--D5~D7线程的创建、回收和取消清理

一个进程中的多个线程共享以下资源 可执行指令 静态数据 进程中打开的文件描述符 当前工作目录 用户ID 用户组ID 每个线程私有的资源 线程ID PC(程序计数器)和相关寄存器 堆区和栈区 错误号(errno) 优先级 执行状态和属性 线程的…

2024阿里云服务器ECS实例全方位介绍_优缺点大全

阿里云服务器ECS英文全程Elastic Compute Service,云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,阿里云提供多种云服务器ECS实例规格,如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等,阿里云服务器网aliyu…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -用户信息修改实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

数字化解决方案在市政交通大显身手

Bentley 应用程序促进了创新设计解决方案,预计可在 25 年内节省 3,200 万美元 大规模现代化计划 大学大道位于爱荷华州锡达福尔斯市繁忙的社区,是一条重要的六车道高速公路,长约两英里,每天通行的车辆有 2 万多辆。该道路已有 60…

java编程中,保证接口幂等性的实现方案讨论

一、什么是幂等性 数学中的幂等是指f(x) f(f(x)),编程领域的术语是指同一个操作,在重复提交的情况下,最终产生的影响是不变的。举例说: 提交订单时,用户在购物车界面,重复点击“下单”,服务端…

vxe-树形结构层级过多横向滚动条设置

一. 问题 在使用vxe-table中的树形结构的时候,如果树形结构的层级过多的话的会导致层级很深的层级,鼠标点击无法选中,对应的内容显示不完全。 层级过多后 二. 解决 方法1:动态的计算所占行的宽度,选取最大宽度给表格列…

统信UOS虚拟机安装VirtualBox扩展使用USB功能

为什么要安装VirtualBox扩展包? 安装 Oracle VM VirtualBox 扩展包的原因是,它提供了对 USB 2.0、USB 3.0、远程桌面协议 VRDP(VirtualBox Remote Desktop Protocol)等实用功能的支持,以增强 VirtualBox 的功能。这些…

MIT_线性代数笔记:第 25 讲 对称矩阵和正定性

目录 对称矩阵 Symmetric matrices实特征值 Real eigenvalues正定矩阵 Positive definite matrices 对称矩阵是最重要的矩阵之一,其特征值为实数并且拥有一套正交特征向量。正定矩阵的性质则更好。 对称矩阵 Symmetric matrices 包含特殊性质的矩阵,例如…

CCF模拟题 202309-1 坐标变换(其一)

问题描述 试题编号: 202309-1 试题名称: 坐标变换(其一) 时间限制: 1.0s 内存限制: 512.0MB 问题描述: 对于平面直角坐标系上的坐标(x,y),小P定义了一个包含…

【Flutter 开发实战】Dart 基础篇:常用运算符

在Dart中,运算符是编写任何程序的基本构建块之一。本文将详细介绍Dart中常用的运算符,以帮助初学者更好地理解和运用这些概念。 1. 算术运算符 算术运算符用于执行基本的数学运算。Dart支持常见的加、减、乘、除、整除以及取余运算。常见的算数运算符如…

从虚拟到现实:数字孪生驱动智慧城市可持续发展

随着科技的飞速发展,智慧城市已经成为未来城市发展的重要趋势。数字孪生技术作为智慧城市建设中的关键技术之一,正在发挥着越来越重要的作用。本文将探讨数字孪生如何从虚拟走向现实,驱动智慧城市的可持续发展。 一、数字孪生技术&#xff1…

【CV】计算两个向量的夹角,并使用 OpenCV 可视化弧线

背景 基于人体/动物,骨骼点数据,计算关节角度 1. 原理 计算两个向量的夹角,我们已三个点为例,BA 向量和BC向量,求 B 的角度。若为四个点,延长交叉即可。 2. 效果 效果图如下 3. 核心代码 def compute_vector_angle(a, b, c):"""计算两个向量 ba 和…

Unity中BRP下的深度图

文章目录 前言一、在Shader中使用1、在使用深度图前申明2、在片元着色器中 二、在C#脚本中开启摄像机深度图三、最终效果 前言 在之前的文章中,我们实现了URP下的深度图使用。 Unity中URP下使用屏幕坐标采样深度图 在这篇文章中,我们来看一下BRP下深度…

【PB续命07】JDBC连接达梦数据库

JDBC(Java DataBase Connectivity) 称为Java数据库连接,它是一种用于数据库访问的应用程序API,由一组用Java语言编写的类和接口组成,有了JDBC就可以用同一的语法对多种关系数据库进行访问,而不用担心其数据库操作语言的差异。 有了…

无线网卡怎么连接台式电脑?正确操作步骤分享!

“我在使用电脑时经常都需要用到网络,请问大家在使用无线网卡时怎么将它与台式电脑进行连接的呢?” 使用电脑的用户在进行网上冲浪时都需要先连接网络。如果不想使用网线,无线网卡不仅可以为用户提供网络服务,在使用时该更加灵活和…

实战:低代码表单引擎助力文件上传与数据处理

在当今的信息化时代,数据已成为企业的重要资产。为了更好地管理和利用这些数据,许多企业开始采用表单上传组件来导入和处理数据。通过使用表单上传组件,用户可以方便地将文件上传至系统中,然后进行后续的数据处理和分析。这种方式…