嵌入式学习day29 指针复习

1.指针:
    1.提供一种间接访问数据的方法
    2.空间没有名字,只有一个地址编号

2.指针:
    1.地址:区分不同内存空间的编号
    2.指针:指针就是地址,地址就是指针
    3.指针变量:存放指针的变量称为指针变量,简称为指针

3.指针的定义:
    int *p = NULL;
    int *q = NULL;
    char *p = NULL;
    double *p = NULL;
    struct student *p = NULL;

    野指针:指向随机空间的指针
    空指针:指向内存地址为0x0的空间的指针

    注意:定义指针一定要初始化,防止成为野指针

4.指针的运算符:
    *: *p作为右值:获得指针指向空间中的值 
       *p作为左值:将右值放入指针指向的空间

    &:获得一个变量在内存空间中的首地址

5.指针的算数运算:
    +
    -
    ++
    --

    p+1:向内存高地址偏移指向的数据类型大小个字节空间
    p-q:两个地址中间差了多少个指向的数据类型
    
6.不同类型的指针操作上有哪些不同
    char *p;
    int *p;
    double *p;
    struct student *p;    

==================================================================================================================================================


1.指针数组和数组指针:


    数组指针:
        int (*a)[5]
        定义一个指针变量a,占8个字节空间,指向20个字节空间

        int a[5] = {1, 2, 3, 4, 5};
        
        a == &a[0] == int *
        注意:
            大部分情况下a可以理解为int*型,有2中特殊情况除外
            1.sizeof运算时  
                sizeof(a): 20
                sizeof(int *): 8
            2.&运算符
                &a:int (*)[5]
                &int *: int ** 

         数组指针特点:
            1.对一维数组数组名&得到数组指针,值不变,类型升级为指向整个数组的指针
            2.对数组指针*,值不变,类型降级为指向数组第一个元素的指针

    指针数组:
        int *a[5];
        定义一个数组a,有5个元素,每个元素为int *型,占40个字节空间

        char *pstr[5];

        操作多个字符串时,通过将每个指针指向一个字符串开头,完成对所有字符串的操作,使用指针数组

        指针数组和二维数组的区别:
            存储字符串数组使用二维数组
            操作字符串数组使用指针数组

指针和数组的关系:


    1.指针和一维数组的关系:
        int a[5] = {1, 2, 3, 4, 5};
        int *p = NULL;

        p = &a[0];
        p = a;

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

        a == a[0]

        访问第n个元素:
        a[n] == *(a+n) == *(p+n) == p[n]

    2.指针和二维数组的关系:
        int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
        int *p = NULL;
        int (*q)[3] = NULL;

        p = &a[0][0];
        p = a[0];
        p = *a;
        q = a;

        数组的数组名a是指向数组第一行元素的数组指针

        访问第m行第n列元素方式(N是每行的列数):
        a[m][n]
        *(a[m]+n)
        *(*(a+m)+n)
        *(p+m*N+n)
        *(*(q+m)+n)
        *(q[m]+n)
        q[m][n]

    3.指针操作字符串(字符串的遍历)
        char str[32] = {"hello world"};
        char *p = NULL;

        p = str; 
        while (*p != '\0')
        {
            p++;
        }

函数指针和指针函数:


    函数指针:
        int (*p)(int, int) = NULL;
        定义一个指针变量p,p是指向一个int返回值且有2个int参数的函数的指针

    指针函数:
        int *p(int a, int b)
        {

        }

        定义一个函数,函数的返回值是指针

        注意:
            绝对不能返回局部变量的地址,否则函数调用结束后,会清除局部变量的空间(栈),应该返回例如数据区的地址,这样函数调用结束后,仍可通过返回的地址访问数据区的数据。

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

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

相关文章

MyBatis中 #{} 和 ${} 区别

Mybatis的Mapper映射文件中,有两种方式可以引用形参变量进行取值: #{} 和 ${}。本文将简述两种方式的区别和适用场景 取值引用 #{} 方式 #{}: 解析为SQL时,会将形参变量的值取出,并自动给其添加引号。 例如:当实参username&quo…

学习助手:借助AI大模型,学习更高效!

在当今的数字时代,人工智能(AI)的崛起已经彻底改变了我们获取信息、处理数据以及学习新知识的方式。AI大模型,特别是如OpenAI开发的GPT-4这类先进的技术,已成为学习和教育领域的一大助力。本文旨在探索如何借助AI大模型…

了解 SYN Flood 攻击

文章目录: 什么是 SYN Flood 攻击?对网络的影响SYN Flood 发生的迹象如何解决? 什么是 SYN Flood 攻击? SYN Flood(SYN 洪水攻击)是一种常见的分布式拒绝服务(DDoS - Distributed Denial of Se…

购买腾讯云服务器请先领取代金券,2024腾讯云优惠

腾讯云优惠代金券领取入口共三个渠道,腾讯云新用户和老用户均可领取8888元代金券,可用于云服务器等产品购买、续费和升级使用,阿腾云atengyun.com整理腾讯云优惠券(代金券)领取入口、代金券查询、优惠券兑换码使用方法…

FL Studio选购指南:新手小白应该选择哪个版本FL Studio?

很多打算入手正版FL Studio的新手朋友都会纠结一个问题:哪个版本的FL Studio更适合我,到底应该入手哪一款FL Studio?本文会介绍每个版本之间的差异点,并带大家选择适合自己的FL Sudio版本。 FL Studio全版本 在选购前有一些小知识…

什么是MAC地址? win10电脑查看MAC地址的多种方法

您是否知道连接到家庭网络的每件硬件都有自己的身份?正如每个设备都分配有自己的 IP 地址一样,每个硬件都有一个唯一的网络标识符。 该标识符称为MAC 地址。MAC 代表媒体访问控制。您可能需要 MAC 地址来解决网络问题或配置新设备。在 Windows 中查找您…

three.js 点乘判断平行向量方向异同

效果&#xff1a; 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs"></div><div>判断的前提是两个向量平行<el-button click"judge"…

一文掌握大模型提示词技巧:从战略到战术

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

pytest 的 request fixture:实现个性化测试需求

在前文章中&#xff0c;我们看到pytest_repeat源码中有这样一段 pytest.fixture def __pytest_repeat_step_number(request):marker request.node.get_closest_marker("repeat")count marker and marker.args[0] or request.config.option.count......看到参数为r…

Stable Cascade又升级了,现在只需要两个模型

Stable Cascade这个模型&#xff0c;大家如果还有印象的话&#xff0c;是需要下载三个模型的&#xff0c;分别是Stage_a,Stage_b和Stage_c,如果全都下载下来&#xff0c;需要20多个G&#xff0c;但是最近使用ComfyUI做尝试的时候&#xff0c;发现官方的案例中已经没有用到单独的…

P4715 【深基16.例1】淘汰赛题解

题目 有&#xff08;n≤7&#xff09;个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值&#xff0c;且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1号国家和2号国家踢一场比赛&#xff0c;胜者晋级。3号国家和4号国家也踢一场&#xff0c;…

C++用临时对象构造新对象

C用临时对象构造新对象 //用临时对象构造同类型的新对象&#xff0c;该临时对象不产生&#xff1b; // 直接用生成临时对象的方法构造新对象&#xff0c;这是编译器对代码的优化&#xff0c;效率更高 #include<iostream> using namespace std; class MyClass { public:…

Golang 调度器 GPM模型

Golang 调度器 GPM模型 1 多进程/线程时代有了调度器需求 在多进程/多线程的操作系统中&#xff0c;就解决了阻塞的问题&#xff0c;因为一个进程阻塞cpu可以立刻切换到其他进程中去执行&#xff0c;而且调度cpu的算法可以保证在运行的进程都可以被分配到cpu的运行时间片。这…

在网页上踢球:打造我自己的python(Django)足球网站

足球不仅仅是球场上的90分钟。它是一个不断发展的故事&#xff0c;一个全球球迷社群的粘合剂&#xff0c;一个数据和热情交织的世界。作为一名开发者和球迷&#xff0c;我决定将这两大爱好结合起来&#xff0c;用 Django 打造一个足球网站&#xff0c;让球迷们能够追踪他们最爱…

Unity AI生成全景图制作天空盒

现在的AI很强大。 其中&#xff0c;有这样一个网站&#xff0c;通过输入提示词&#xff0c;选择某种风格就可以为你生成360全景图。 网页链接 一、生成全景图 打开网页后&#xff0c;如图&#xff1a; 勾选&#xff0c;点击CONFIRM。 点击GET STARTED&#xff0c;进入主页。…

Stable Cascade-ComfyUI中文生图、图生图、多图融合基础工作流分享

最近 ComfyUI对于Stable Cascade的支持越来越好了一些&#xff0c;官方也放出来一些工作流供参考。 这里简单分享几个比较常用的基础工作流。 &#xff08;如果还没有下载模型&#xff0c;可以先阅读上一篇Stable Cascade升级&#xff0c;现在只需要两个模型&#xff09; &a…

Docker技术概论(5):Docker网络

Docker技术概论&#xff08;5&#xff09; Docker网络 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog…

【C++提高编程】

C提高编程 C提高编程1 模板1.1 模板的概念1.2 函数模板1.2.1 函数模板语法1.2.2 函数模板注意事项1.2.3 函数模板案例1.2.4 普通函数与函数模板的区别1.2.5 普通函数与函数模板的调用规则1.2.6 模板的局限性 1.3 类模板1.3.1 类模板语法1.3.2 类模板与函数模板区别1.3.3 类模板…

备战蓝桥杯---动态规划的一些思想1

话不多说&#xff0c;直接看题&#xff1a; 目录 1.双线程DP 2.正难则反多组DP 3.换个方向思考&#xff1a; 1.双线程DP 可能有人会说直接贪心&#xff1a;先选第1条的最优路径&#xff0c;再选第2条最优路径。 其实我们再选第1条时&#xff0c;我们怎么选会对第2条的路径…

面条机水箱低液位提醒功能如何实现

光电液位传感器在面条机水箱低液位功能的实现中发挥着重要作用。该技术通过光学原理和分离式设计&#xff0c;实现了面条机水箱液位的精准检测和智能控制&#xff0c;为面条生产提供了稳定的保障。 采用分离式液位传感器&#xff0c;将菱镜部分设计直接置于面条机水箱上&#…