嵌入式学习——C语言基础——day10

1. 指针的基本概念

1.1 地址

        用来区别不同内存字节空间的编号

1.2 指针

        地址就是指针,指针就是地址,地址是一个编号,指针多了指向的概念

1.3 指针变量

        用来存放指针的变量,有时将指针变量简称为指针

2. 指针相关运算符

        &    ——    取地址运算符,获得变量在内存中的首地址

                注意:

                        1. 只能对变量进行操作

                        2. &运算符连接表达式的值为变量在内存空间中的首地址

                        3. &会让变量升级

                                int         ->     int *

                                char      ->     char *

                                double  ->     double  *

        *    ——   左值:创建指针变量      右值:取指针对应空间的值

                注意:

                        1. 只有指针才能进行*运算

                        2. *运算让变量降级

                                int *            ->          int 
                                double *     ->         double 
                                char *         ->         char

                        3. 

                                int *p               *p获得该地址开始向下4字节空间中的值

                                double *p        *p获得该地址开始向下8字节空间中的值

                                char *p            *p获得该地址开始向下1字节空间中的值      

                        4.   如果*和&同时出现,作用相互抵消:*&a   ==   a

3. 指针变量的定义

        数据类型  *变量名

            int *p;            p指向四个字节空间首地址
            double *p;     p指向八个字节空间首地址
            char *p;         p指向一个字节空间首地址

                注意:

                        1. 在64位操作系统中,指针都占八个字节的空间

                        2. 野指针:未经初始化的指针或指向已经被释放空间的指针

                        3. 在指针定义时,必须要初始化,不能使用未经定义的指针

4. 指针的初始化

            int *p = NULL;

            NULL:空指针(指向内存地址为0x0的指针,类似于整形变量的初始化0值)

5. 指针的算数运算(int *p = NULL)

        +          p+1   (p指针向内存高地址偏移4个字节空间)

        -           p-1   (p指针向内存低地址偏移4个字节空间)

                    两个相同类型的指针相减:获得两个地址中间相差了多少个该类型的元素

        ++        向内存高地址偏移指向数据类型大小个字节空间

        --          向内存高地址偏移指向数据类型大小个字节空间

6. 指针常见操作

        1.指针变量本身,也就是p,修改p的值可以改变指针变量的指向
        2.指针变量指向的空间,也就是*p,修改*p的值并不能改变指针变量的指向,只是利用指针修改对应空间中的值

7. 指针作为函数参数(地址传递)

        注意:        

                1. 函数传参分为值传递和地址传递

                2. 函数体内想修改函数体外的值用地址传递

8. 指针和数组的关系

8.1 指针和一维数组的关系

        int a[32];

        int *p = &a[0];

        1. 数组名是指向数组第一个元素的指针

                     a == &a[0]      

        2. 访问数组下标为n的元素

                a[n] == *(a + n) == p[n] == *(p + n)

                一般形式: 指针[偏移量] == *(指针 + 偏移量)

                注意:p为指针变量,能够进行++操作,允许p++

                           a为数组的首地址常量,不能进行++操作,不允许a++ 

9. 指针作为函数参数

    int a[5] = {1, 2, 3, 4, 5};

    第一种:
    int fun(int array[], int len); 其中array[]的 [] 可以为任意值

    第二种:
    int fun(int *parray, int len);
 

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

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

相关文章

开放地址法解决哈希冲突

1.基本思想: 有冲突时就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将元素存入. 2.开放地址法的常用方法: (1) 线性探测法: Hi(Hash(key)di)%m (1<i<m),其中:m为哈希表长度,di为增量序列1,2,……m-1,且dii;其实就是一旦有冲突,就找下一个空地…

【Spring MVC】_SpringMVC项目返回静态页面

目录 1. 创建与设计前端页面 2. 返回HTML静态页面 2.1 示例1&#xff1a;使用RestController 2.2 示例2&#xff1a;使用Controller 3. RestController与Controller 在本专栏关于SpringMVC项目的相关文章中&#xff0c;已经介绍了操作HTTP请求的方式&#xff0c;包括多种传…

CTFHub Web 信息泄漏(一)

目录遍历 打开题目 点击开始寻找flag 发现在flag_in_here页面中有四个文件夹 点击打开第一个文件夹 发现里面还有四个文件夹 再次点击打开第一个文件夹 里面什么都没有 尝试对所有文件夹依次都点击打开 在2/4中发现flag.txt 点击打开即可得到flag 不太懂这题的难点&#…

[RocketMq:基于容器化]:快速部署安装

文章目录 一&#xff1a;相关镜像准备&#xff1a;RocketNameServer1.1&#xff1a;查看相关镜像和版本1.2&#xff1a;拉取镜像1.3&#xff1a;配置和运行RocketNameServer容器 二&#xff1a;相关镜像准备&#xff1a;RocketBroker2.1&#xff1a;创建配置目录和broker配置文…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(一)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 1 - 2节&#xff09; P1《课程介绍》 开场白&#xff0c;HarmonyOS 的一个简介&#xff0c;话不多说&#xff0c;直接看图吧&…

【算法一则】【贪心】数组中的数可以拼装成的最大数

题目 给定一组非负整数 nums&#xff0c;重新排列每个数的顺序&#xff08;每个数不可拆分&#xff09;使之组成一个最大的整数。 注意&#xff1a;输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。 示例 1&#xff1a; 输入&#xff1a;nums [10,2] …

基于canal监听MySQL binlog实现数据增量同步

一、背景 业务反馈客服消息列表查询速度慢&#xff0c;有时候甚至要差不多20秒&#xff0c;急需优化提升速度。 二、方案 引入 首先&#xff0c;体验系统&#xff0c;发现查询慢的正是消息列表查询接口。 接着去看代码的设计&#xff0c;流程比较长&#xff0c;但从代码逻…

应用监控(Prometheus + Grafana)

可用于应用监控的系统有很多&#xff0c;有的需要埋点(切面)、有的需要配置Agent(字节码增强)。本节我教大家另外一个监控系统的使用 —— Grafana。 Grafana 监控面板 这套监控主要用到了 SpringBoot Actuator Prometheus Grafana 三个模块组合的起来使用的监控。非常轻量好…

第一个大型汽车ITU-T车载语音通话质量实验室投入使用

中国汽车行业蓬勃发展&#xff0c;尤其是新能源汽车风起云涌&#xff0c;无论是国内还是海外需求旺盛的趋势下&#xff0c;除乘用车等紧凑型车外&#xff0c;中型汽车如MPV、小巴、小型物流车&#xff0c;大型汽车如重卡、泥头车等亦加入了手机互联、智驾的科技行列&#xff0c…

机器人-轨迹规划

旋转矩阵 旋转矩阵--R--一个3*3的矩阵&#xff0c;其每列的值时B坐标系在A坐标系上的投影值。 代表B坐标系相对于A坐标系的姿态。 旋转矩阵的转置矩阵 其实A相对于B的旋转矩阵就相当于把B的列放到行上就行。 视频 &#xff08;将矩阵的行列互换得到的新矩阵称为转置矩阵。&…

基于__torch_dispatch__机制的dump方法

基于__torch_dispatch__机制的dump方法 1.参考链接2.原理3.代码4.效果 之前拦截torch和torch.Tensor的办法,在处理backward时,不能看到aten算子的细节.以下基于__torch_dispatch__机制的方案更节约代码,且能看到调用栈 1.参考链接 [原理] (https://dev-discuss.pytorch.org/t…

matlab学习005-利用matlab设计滤波器

目录 一&#xff0c;含有多个频率成分的三角信号 1&#xff0c;以采样频率fs20KHz对信号采样&#xff0c; 画出信号的波形&#xff1b; 1&#xff09;前期基础 2&#xff09;波形图 3&#xff09;代码 2&#xff0c;选取合适的采样点数&#xff0c;利用DFT分析信号的…

FPGA 以太网通信UDP通信环回

1 实验任务 上位机通过网口调试助手发送数据给 FPGA &#xff0c; FPGA 通过 PL 端以太网接口接收数据并将接收到的数据发送给上位机&#xff0c;完成以太网 UDP 数据的环回。 2 系统设计 系统时钟经过PLL时钟模块后&#xff0c;生成了两种不同频率和相位的时钟信号&#…

基于SpringBoot+VueHome F家居系统的设计与实现

系统介绍 该Home F家居系统采用B/S架构、前后端分离以及MVC模型进行设计&#xff0c;并采用Java语言以及SpringBoot框架进行开发。本系统主要设计并完成了用户注册、登录&#xff0c;购买家具过程、个人信息修改等&#xff0c;商家添加家具信息、对家具进行发货&#xff0c;管理…

缓解程序员工作压力:从心理健康到社交网络

缓解程序员工作压力&#xff1a;从心理健康到社交网络 缓解程序员工作压力&#xff1a;从心理健康到社交网络摘要引言工作与休息的平衡制定有效的工作计划定时休息和放松 心理健康与自我关怀培养良好的生活习惯寻找心灵的慰藉 社交与网络建设加入专业社区和论坛建立良好的同事关…

【静态分析】静态分析笔记09 - 污点分析

参考&#xff1a; 【课程笔记】南大软件分析课程—16课时完整版 - 知乎 ------------------------------------------------------------------------------- 1. 信息流安全 访问控制&#xff1a;关注信息访问。 信息流安全&#xff1a;关注信息传播。 信息流&#xff1a…

自己搭建的大疆无人机RTMP流媒体服务延迟太大

流程&#xff1a;无人机摄像头->图传->遥控器->流媒体服务器->取流播放&#xff0c;延迟有10秒来的&#xff0c;大家有没有什么好的方案。

【介绍下有那些常见的ssh功能】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

python作业 切片逆转

题目&#xff1a; &#xff08;反转显示一个整数&#xff09;编写下面的函数&#xff0c;反向显示一个整数。 列如&#xff1a;reserse(3456)。编写一个测试程序&#xff0c;提示用户输入一个整数&#xff0c;然后显示它的反向数。 第一步定义一个函数&#xff1a; def rev…

Linux进程概念(六):进程控制

目录 进程创建 fork函数 进程终止 终止时干了什么 进程终止的三种情况 main函数的返回值 打印默认退出码 自定义退出码 总结 进程终止 exit函数 _exit函数 exit和_exit的区别 进程等待 什么是进程等待 为什么要有进程等待 wait函数 waitpid函数 阻塞等待与…