• 嵌入式学习笔记(63)指针到底是什么


    3.1.1.指针变量和普通变量的区别

    首先必须非常明确:指针的实质就是个变量,它跟普通变量没有任何本质区别。指针完整的名字叫指针变量,简称指针。

    3.1.2.为什么需要指针

    (1)指针的出现是为了实现间接访问。在汇编中都有间接访问(CPU访问内存通过CPU中的寄存器写入内存地址来实现间接访问,譬如:ldr r0, [r1] 将CPU中的r1寄存器中保存的DDR内存地址处所保存在DDR内存中的值赋值给r0寄存器),其实就是CPU的寻址方式中的间接寻址。

    (2)间接访问(CPU的间接寻址)是CPU设计时决定的,这个决定了汇编语言必须能够实现间接寻址,又决定了汇编之上的C语言也必须实现间接访寻址。

    (3)高级语言如Java、C#等没有指针,那么他们怎么实现间接访问?答案是语言本身帮我们封装了。

    3.1.3.指针使用三部曲:定义指针变量、关联指针变量、解引用

    (1)当我们int *p 定义一个指针变量p时,因为p是局部变量,所以也遵循C语言局部变量的一般规律(定义局部变量并且未初始化,则值是随机的),所以此时p变量中存储的是一个随机的数字。

    (2)此时如果我们解引用p,则相当于我们访问了这个随机数字为地址的内存空间。那这个空间到底能不能访问不知道(也许可以也许不行),所以如果直接定义指针变量未绑定有效地址就去解引用几乎必死无疑。

    (3)定义一个指针变量,不经绑定有效地址就去解引用,就好象拿一个上了镗的枪在四面八方中随意开了一枪。

    (4)指针绑定的意义就在于:让指针指向一个可以访问、应该访问的地方(就好象拿着枪瞄准目标的过程一样),指针的解引用是为了间接访问目标变量(就好象开枪是为了打中目标一样)

       嵌入式物联网的学习之路非常漫长,不少人因为学习路线不对或者学习内容不够专业而错失高薪offer。不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。在评论区私信“嵌入式”0元领取学习资源,让你的学习之路更加顺畅!记得点赞、关注、收藏、转发哦!

  • 相关阅读:
    Codesys + BeagleBone PLC控制达到小儿科水平
    第19节-PhotoShop基础课程-历史记录画笔工具
    大学生静态HTML鲜花网页设计作品 DIV布局网上鲜花介绍网页模板代码 DW花店网站制作成品 web网页制作与实现
    2023.10.17
    Factorial Divisibility(多个数的阶乘之后是否整除另一个数的阶乘)
    如何3分钟,快速开发一个新功能
    数据结构-----红黑树的删除操作
    舵机调试上位机
    夏令时及java中常用方法
    直播预告:防御升级-SMC2精准对抗账号劫持和漏洞威胁
  • 原文地址:https://blog.csdn.net/m0_70888041/article/details/134049498