“实例”C语言快速入门笔记-入门指针

一、指针是什么

指针就是变量,用来存放地址的变量

计算机中有偌大的内存,那么如何管理这些内存呢,我们类比管理楼宇的方法,将楼的每个房间进行编号,比如一单元402 这样就可以找到了这见屋子

那么我们将内存进行编号,这些编号就可以帮我们找到内存中的某块空间,所以说这些编号就是某块内存单元的地址,通过地址可以找到对应的内存单元,也可以说这些地址指向了内存单元,所以将地址也叫做指针。

内存单元的编号怎么产生的呢?
如32位机器,通电后会2^32次方种可能性,这些即可作为内存的编号

在这里插入图片描述
在这里插入图片描述

(一)内存如何编号

1 Byte = 8 Bits
1 KB = 1024 Bytes
1 MB = 1024 KB
1 GB = 1024 MB

  • 将内存划分为一个个的小单元,一个小单元是1个字节
  • 通过规定,将这些小单元进行编写地址,在通过规定,
    -----如果是32位机器,有2^32个编号,就意味着有这么多的字节,换算成GB也就是4G的空间
    -----如果是64位机器,有2^64个编号,意味着有这么多的字节,数值大于1亿GB
    也就是说32位系统的处理器最大只支持到4G内存,而64位系统最大支持的内存高达亿位数,实际运用过程中大多数的电脑32位系统最多识别3.5GB内存,64位系统最多识别128GB内存
    在这里插入图片描述
    在这里插入图片描述

(二)指针的大小

指针是用来存储地址的变量,那么指针的大小是多少呢
32位机器------地址大小有32位,就是32个bit,换算位4个字节,所以需要4个字节的空间来存储
64位机器------地址大小有64位,就是64个bit,换算位8个字节,所以需要8个字节的空间来存储

二、指针和指针类型

前置知识:
4个二进制位可以表示一个16进制数字

(一)指针类型的两个意义

  1. 指针类型决定了指针解引用的权限有多大
    整形指针解引用访问4个字节
    字符形指针解引用访问1个字节
    doubie访问8个字节

在这里插入图片描述
2. 指针类型决定了指针走一步走多远
整形指针加1 步长为4个字节
字符型指针加1 步长为1 字节

在这里插入图片描述

三、野指针

野指针就是指针指向的位置是不可知的(随机的、不确定的、没有明确限制的)

(一)野指针成因

  1. 指针没有初始化
    因为局部变量没有初始化 默认是随机值
    在这里插入图片描述

  2. 指针越界
    在这里插入图片描述
    超出指针访问范围了越界

  3. 指针指向的空间释放
    曾经是你的,但你不珍惜,分手后你后悔莫急,可以你已经不能访问他了
    在这里插入图片描述
    局部变量a在函数结束后销毁了

(二)避免出现野指针

  1. 指针初始化
    在这里插入图片描述

  2. 小心指针越界

  3. 指针指向空间释放后,及时防止NULL

  4. 在使用指针使用之前,检查有效性
    在这里插入图片描述

四、指针的运算

指针加减整数
指针关系运算
指针减去指针(前提是两个指针指向同一块空间)得到的是之间元素个数
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

五、指针和数组

数组名就是数组首元素地址

在这里插入图片描述

五、二级指针

在这里插入图片描述
int * pa
int * 表示是指针变量存的是地址 谁的地址呢 指针变量的地址,那怎么表示指针变量呢,用
pa表示

怎么使用呢
在这里插入图片描述

六、指针数组

在这里插入图片描述

七、单片机中的指针

在这里插入图片描述

  • 手机的运行需要存储卡,单片机的内部也有存储空间,
  • 将这片空间进行划分,并进行编号,但是标号很难记住,
  • 比如这个空间的标号为32位,也就是32bit叫1111 1111 1111 1111 1111 1111 1111 1111,根本记不住好吧
  • 那么我们为了方便记住,给这些标号对应的地址另外起个名字,如图片中205号,我们既可以叫它205,还可以叫它单片机实验室…
  • 单片机对数据的存储,可以比作,到房间中放椅子或拿椅子
  • 指针就是地址
  • 那么比如105这个房间,到底可以放多少椅子呢?
    • unsigned char a; 0~255 2的8次方
    • unsigned int a ;0~65535 2的16次方
    • char a; -128~127
  • &符号:取址符 得到变量的实际地址
  • *符号:取值符

  • 指针变量:就是存放内存地址的变量
  • 指针和指针变量是两个不同的概念,通常会把指针变量简称为指针

在这里插入图片描述

在这里插入图片描述
上面这个代码中的值 是PP去改变,LED没有变
在这里插入图片描述
这个步骤 操作了LED的改变

当想要在子函数中,改变主函数变量的值时,采用指针
主函数调用子函数,且发生值传递,需要用到指针

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值