【【STM32学习-3】】

STM32学习-3

在这里插入图片描述
下面是对c语言的稍微复习
这个是我们设置好的文件 以后拖出去用就可以了
这里加入关于指针的感想
关于指针数组和数组指针的想法
常规的东西是int a=10;
int * p=&a; (p指向了a元素,意思是p等于a的地址 类型是int*)就是 整型指针
然后我们在做别的操作时 解引用 *p 就可以改变a的值了

int main()
{
int a = 0;
int* p = &a;
*p = 1;
printf("%d\n", a);
printf("%d\n", *p);
printf("%d\n", *(&a));
return 0;
}

很明显这三个值都是1
那么接下来我介绍一个数组的概念
数组 int arr[5]={1,2,3,4,5};
数组名arr只有在计算长度size(arr)或者&arr的时候才表示整个数组的地址!!!!这个概念非常重要
现在我们先从一位数组出发

int arr[5] = { 1,2,3,4,5 };
int* p = arr;

此处的arr是什么它不属于我们上述提到的两种情况之中,所以这个名字代表的是首元素地址

int main()
{
int arr[5] = { 1,2,3,4,5 };
int* p = arr;
printf("%d\n", arr);
printf("%d\n", p);
return 0;
}

这就说明首元素地址和p值是一样的,其实他们都算是指针类型 ,指向首元素
为了确信我们修改代码再次证明

printf(%d\n”, *arr);
printf(%d\n”, p);发现结果是一样的说明这个arr是指针类型的一种特殊形式它正好是数组名 ,然后为了以示区分 我们才用了一个新的变量p(也是指针类型)去代替它既然理解了我上面的这段话那么下面的代码应该是相对容易的int main(){int arr[5] = { 1,2,3,4,5 };int p = arr;
printf("%d\n", *arr);//1
printf("%d\n", *p);//1
printf("%d\n", p+1);//2 先加再取地址 地址加1就是数组移到下一位printf("%d\n", 

好的那么我们稍微修改一下这个代码把int p = arr;改成 int( p)[5] = &arr;先再讲述一个问题我们只讲结论&arr 表示的是整个数组的地址!!!!然后 分析int( p)[5]这句话的意思是 p是一个指针 该指针指向了一个数组,指向了一个数组,指向了一个数组,重要的话说3遍。 该数组有5个元素 每个元素类型是int 所以他叫 数组指针 !!!c语言就是这么规定的所以我写上&arr 表示整个数组的地址,这样我的指针p [5] 才能指示出arr中的全部元素!!!这样的话int p=&a; p指向了a的地址,p=a
int( p)[5] = &arr; p指向了整个数组的地址 那么同理 *p=arr *p就是数组arr 而数组arr,在我们的眼中就是首元素地址
好的接下来仅仅修改这一条语句看代码
(&arr既然是全部元素的地址,那也可以看成一个特殊的指针)!!!!

int main()
{
int arr[5] = { 1,2,3,4,5 };
int(p)[5] = &arr;//这次我们新加入的条件int q = arr;//上一个条件
printf("%d\n", *arr);//1
printf("%d\n", *q);//1 这两个都知道是首元素
printf("%d\n", arr); //首元素地址
printf("%d\n", q);//q相当于arr了 也是首元素地址
printf("%d\n", *p);//*p就是arr
printf("%d\n", &arr);//整个元素的地址但是arr数值上是首元素地址
printf("%d\n", p);//这个p也是整个数组的地址
printf("%d\n", p+1);
printf("%d\n", &arr+1);//这些与上面差了20位
printf("%d\n", arr+1);//这样就比较直观的看出 这只是差了4位
/
//得出不太恰当但好用的结论
//p=&arr *p=arr=q
printf("%d\n", *arr);
printf("%d\n", *q);
printf("%d\n", *(p));printf("%d\n",( *(&arr)));
//这四个结果都是1
printf("%d\n", *(arr+1));
printf("%d\n", *(*p+1));
printf("%d\n", *(q+1));
printf("%d\n", ((&arr)+1));
//这四个都是2
return 0;
}

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

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

相关文章

C语言假期作业 DAY 10

一、选择题 1、求函数返回值,传入 -1 ,则在64位机器上函数返回( ) int func(int x) { int count 0; while (x) { count; x x&(x - 1);//与运算 } r eturn count; } A: 死循环 B: 64 C: 32 D: 16 答案解析 正确答案&#xff…

HCIA-datacom数通题库和录播视频资料

HCIA-Datacom,是华为数通认证的初级考试,培训与认证具备数通基础通用知识和技能水平的工程师,只是入门了解数通的一些基础通用知识,适用于小白了解和学习数通知识点起点。 个人建议还是有必要考的,如果在企业考试考试…

ffplay——QT项目移植

一、ffmpeg源码编译 参考: https://blog.csdn.net/sgzed/article/details/119850119 在生成时做了一些修改: ./configure --toolchainmsvc --enable-shared --enable-postproc --enable-gpl --prefixwindows 二、对文件做调整 ffplay只需要三个文件&…

品牌活动 | 阿里云云原生技术实践营:大模型+CloudOS,实现企业智能化

近日,由阿里云举办的“云原生技术实践营-应用和容器实践专场”在广州顺利开展。行云创新CEO马洪喜作为受邀嘉宾之一,参加了本次活动,分享了主题为“API大语言模型,以非侵入式实现企业业务智能化变革”的演讲,向参会者展…

JS判断类型的方法和对应的局限性(typeof、instanceof和Object.prototype.toString.call()的用法)

JS判断类型的方法和对应的局限性(typeof、instanceof和Object.prototype.toString.call()的用法) 一、typeof 返回: 该方法返回小写字符串表示检测数据属于什么类型,例如: 检测函数返回function 可判断的数据类型&#xff1a…

Vcenter 创建 虚拟机配置 Thin Provision 模式 disk

介绍 在vCenter中选择虚拟磁盘格式通常也取决于您的需求和使用情况。 vSphere支持多种虚拟磁盘格式,以下是一些常见的格式: Thick Provision Lazy Zeroed:这是vSphere中的默认格式。它会预分配虚拟磁盘所需的存储空间,但只有在虚…

Meta “地平线世界”移动端应用即将上线,手机快乐元宇宙?

根据海外记者 Janko Roettgers 的报道,Meta 预计很快推出移动版的 VR 元宇宙服务 "地平线世界",这是Meta 长期开发的产品。 根据最新报道,Meta宣布正在研发“地平线世界”的移动版,并表示这一服务已经可以在Quest VR设…

杜教筛的小结

总所周知,杜教筛是一个可以快速求积性函数前缀和的工具,为了快速理解杜教筛,自己给自己写了一个文章快速理解。 它可以在O(n2/3)的复杂度快速求出某个积性函数的前缀和。 例如,我们想要知道 f f f函数的前缀和,我们可…

《向量数据库指南》——腾讯云向量数据库Tencent Cloud VectorDB产品特性,架构和应用场景

腾讯云向量数据库(Tencent Cloud VectorDB)是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持 10 亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟。腾讯云向量数据库不仅能为大模型提…

刷题笔记:day 1

力扣 283 移动零 解法一:双指针 定义一个指针 cur 去遍历数组 ; 定义一个指针 dest 去指向已处理区间中,非零的最后一个位置。 然后让 指针 cur 遇到 0 ,就往后走 ; 遇到的数不是 0 ,就与 dest指针的下…

Django使用用户列表的展示和添加

接着上一篇:https://blog.csdn.net/javascript_good/article/details/132027702 来实现用户表的查询和添加 1、创建数据库表 在models.py 中,增加UserInfo类,包括字段姓名、密码、年龄、账号余额、入职时间、所属部门、性别 verbose_name 就…

web-6-深入理解JSP:探索其核心概念和特性

JSP 今日目标: 理解 JSP 及 JSP 原理 能在 JSP中使用 EL表达式 和 JSTL标签 1,JSP 概述 JSP(全称:Java Server Pages):Java 服务端页面。是一种动态的网页技术,其中既可以定义 HTML、JS、CSS…

医药化工企业洁净厂房改造消防防爆安全的重要性

设计 【摘要】:近年来,我国医药化工企业规模不断扩大。医药化工企业的情况复杂,稍有不慎将发生火灾或者爆炸,对人员生命以及财产安全造成巨大的损害,酿成悲剧。所以,“三同时”原则的落实,如何…

分布式事务之CAP理论和BASE理论详解

🚀 分布式事务 🚀 🌲 AI工具、AI绘图、AI专栏 🍀 🌲 如果你想学到最前沿、最火爆的技术,赶快加入吧✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆&…

【软件安装】MATLAB_R2021b for mac 安装

Mac matlab_r2021b 安装 下载链接:百度网盘 下载链接中所有文件备用。 我所使用的电脑配置: Macbook Pro M1 Pro 16512 系统 macOS 13.5 安装步骤 前置准备 无此选项者,自行百度 “mac 任何来源”。 1 下载好「MATLAB R2021b」安装文…

【RabbitMQ】golang客户端教程1——HelloWorld

一、介绍 本教程假设RabbitMQ已安装并运行在本机上的标准端口(5672)。如果你使用不同的主机、端口或凭据,则需要调整连接设置。如果你未安装RabbitMQ,可以浏览我上一篇文章Linux系统服务器安装RabbitMQ RabbitMQ是一个消息代理&…

学习笔记|大模型优质Prompt开发与应用课(二)|第五节:只需3步,优质Prompt秒变应用软件

原作者:依依│百度飞桨产品经理 一乔│飞桨开发者技术专家 分享内容 01:大模型应用简介 02:LLM应用开发范式 03: Al Studio大模型社区 04:AI对话类应用开发技巧 大模型技术爆发,各类应用产品涌现 文心产业级知识增强大模型 工作中的“超级助手”—…

【数据结构】实验十一:图

实验十一 图 一、实验目的与要求 1)掌握图的存储表示与操作实现。 2)掌握图的连通性及其应用。 二、 实验内容 1.用邻接表存储一个图形结构,并计算每个顶点的度。 2. 采用深度和广度优先搜索算法,遍历上述这张图,…

网络基础-认识每层的设备和每层的特点用途

目录 网络层次常见设备各层介绍数据链路层网络层传输层应用层 网络层次 常见设备 各层介绍 数据链路层 有了MAC地址。数据链路层工作在局域网中的,以帧为单位进行传输和处理数据。 网络层 网络层有了IP。不同的网络通过路由器连接成为互联网 路由器的功能:   …

数据挖掘实战:基于KMeans算法对超市客户进行聚类分群(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…
最新文章