嵌入式-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.最后五分钟,等你评论区补充

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 部署haproxy cpu占用特别高

在部署mysql 主主高可用时&#xff0c;使用haproxy进行负载&#xff0c;在服务部使用的情况下发现服务器cpu占比高&#xff0c;负载也高&#xff0c;因此急需解决这个问题。 1.解决前现状 1.1 部署配置文件 cat > haproxy.cfg << EOF globalmaxconn 4000nbthrea…

组态王与S7-1200PLC之间 Profinet无线以太网通信

组态王与S7-1200PLC之间想要搭建 Profinet无线以太网通信&#xff0c;需要用到以下设备&#xff1a; ● 西门子PLC型号&#xff1a;S7-1200 2台 ● 上位机&#xff1a;组态王6.55 1台 ● 无线通讯终端&#xff1a;DTD418MB 3块 ● 主从关系&#xff1a;1主2从 ● 通讯接…

php-ffmpeg运用 合并视频,转码视频

下载 官网 windows 版本 添加环境变量 合并视频 public function test_that_true_is_true(): void{ini_set(memory_limit,-1); //没有内存限制set_time_limit(0);//不限制执行时间//ffmpeg配置$path [ffmpeg.binaries > D:\soft\ffmpeg\bin/ffmpeg.exe,ffprobe.binaries…

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

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

工业异常检测AnomalyGPT-Demo试跑

写在前面&#xff1a;如果你有大的cpu和gpu可以使用&#xff0c;直接根据官方的安装说明就可以&#xff0c;如果没有&#xff0c;可以点进来试着看一下我个人的安装经验。 一、试跑环境 NVIDIA4090显卡24g,cpu内存33G&#xff0c;交换空间8g,操作系统ubuntu22.04(试跑过程cpu…

【服务器数据恢复】Raid5热备盘同步失败导致lvm结构损坏的数据恢复案例

服务器数据恢复环境&#xff1a; 两组由4块磁盘组建的raid5磁盘阵列&#xff0c;两组raid5阵列划分为lun并组成了lvm结构&#xff0c;ext3文件系统。 服务器故障&#xff1a; 一组raid5阵列中的一块硬盘离线&#xff0c;热备盘自动上线并开始同步数据。在热备盘完成同步之前&am…

精进单元测试技能——Pytest断言的艺术

本篇文章主要是阐述Pytest在断言方面的应用。让大家能够了解和掌握Pytest针对断言设计了多种功能以适应在不同测试场景上使用。 了解断言的基础 在Pytest中&#xff0c;断言是通过 assert 语句来实现的。简单的断言通常用于验证预期值和实际值是否相等&#xff0c;例如&#xf…

vue3中路由的使用(详细讲解)

1、路由的简介 路由(route)&#xff1a;就是根据特定的规则将数据包或请求从源地址传输到目标地址的过程。 在前端或者vue3项目中路由主要用于构建单页面应用程序&#xff08;SPA&#xff09;&#xff0c;其中所有的页面都在同一个HTML文件中加载&#xff0c;通过JavaScript动…

前端八股文(网络篇)一

目录 1.Get和Post的请求的区别 2.常见的HTTP请求头和响应头 3.常见的HTTP请求方法 4.HTTP与HTTPS协议的区别 5.对keep-alive的理解 6.页面有多张图片&#xff0c;HTTP是怎样的加载表现&#xff1f; 7.HTTP请求报文是什么样的&#xff1f; 8.HTTP响应报文是什么样&#x…

为什么大型服务器要用 Linux 系统?

为什么大型服务器要用 Linux 系统&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff…

STM32 ESP8266 物联网智能温室大棚 (附源码 PCB 原理图 设计文档)

资料下载: https://download.csdn.net/download/vvoennvv/88680924 一、概述 本系统以STM32F103C8T6单片机为主控芯片&#xff0c;采用相关传感器构建系统硬件电路。其中使用DHT11温湿度传感器对温度和湿度的采集&#xff0c;MQ-7一氧化碳传感器检测CO浓度&#xff0c;GP2Y101…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch00-1 坐标系与概念基准

本文仅供学习使用&#xff0c;总结很多本现有讲述运动学或动力学书籍后的总结&#xff0c;从矢量的角度进行分析&#xff0c;方法比较传统&#xff0c;但更易理解&#xff0c;并且现有的看似抽象方法&#xff0c;两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有…

Python进阶之元类

Python进阶之元类 目录 什么是元类&#xff1f; 元类的调用流程 根据类自定义元类 __new__方法以及参数 ----------cls ----------name ----------bases ----------attrs __call__方法 生成对象的完整代码 什么是元类&#xff1f; 在python面向对象中&#xff0c;我们知道所有…

使用串口 DMA 模式接收不定长数据

一、简介 曾经遇到客户有一个需求&#xff0c;需要用串口 DMA 的方式接收不定长度的数据&#xff0c;DMA 有个缺点就是在每次传输前需要设定好传输的字节长度&#xff0c;这种方式显然对于接收不定长度的数据来说没有那么灵活。但 DMA 也有着显著的优点&#xff0c;如可直接访…

网络安全—部署CA证书服务器

文章目录 网络拓扑安装步骤安装证书系统安装从属证书服务器 申请与颁发申请证书CA颁发证书 使用windows Server 2003环境 网络拓扑 两台服务器在同一网段即可&#xff0c;即能够互相ping通。 安装步骤 安装证书系统 首先我们对计算机名进行确认&#xff0c;安装了证书系统后我…

(vue)el-cascader级联选择器实现单/多选最后一级并回显

(vue)el-cascader实现多选最后一级并回显 <el-form-item label"选择算法模型&#xff1a;"><el-cascaderv-model"formInline.algorithmId":options"modelOptions":props"{ value: id, label: name, multiple: true, emitPath: fal…

002集filter()函数及lambda()函数应用实例—python基础入门实例

1.filter()函数的基本语法如下&#xff1a; filter ( function , iterable ) 其中&#xff0c;function是一个用于判断的函数&#xff0c;iterable是一个可迭代对象&#xff0c;可以是列表、元组、集合或字符串等。filter()会将iterable中的每个元素依次传给function进行判…

python编程使用selenium模拟登陆淘宝实例代码

selenium简介 selenium 是一个web的自动化测试工具&#xff0c;不少学习功能自动化的同学开始首选selenium &#xff0c;相因为它相比QTP有诸多有点&#xff1a; * 免费&#xff0c;也不用再为破解QTP而大伤脑筋* 小巧&#xff0c;对于不同的语言它只是一个包而已&#xff0c…

【win11 绕过TPM CPU硬件限制安装】

Qt编程指南 VX&#xff1a;hao541022348 ■ 下载iso文件■ 右键文件点击装载出现如下问题■ 绕过TPM CPU硬件限制安装方法■ 虚拟机安装win11 ■ 下载iso文件 选择Windows11 &#xff08;multi-edition ISO&#xff09;在选择中文 ■ 右键文件点击装载出现如下问题 ■ 绕过T…

LINE网页版使用方法(内含LINE网页版特点总结)

如果想要在电脑上使用LINE&#xff0c;但是又觉得下载客户端很累赘的话&#xff0c;LINE网页版是你最好的选择。但是LINE网页版相对于其他平台来说使用方式比较少。所以今天就来讲讲&#xff0c;我们有什么方式可以在电脑中使用LINE。 LINE网页版使用方法 1.需要使用Chrome浏览…