【C语言/C++】初阶指针

1、引言

今天我们学习的是C语言中最重要的知识——指针,这篇博客的目的在于初识指针。

2、指针是什么

1、指针是内存中最小单元的编号,也就是地址
2、平时口语中所说的指针,通常说的是指针变量,是用来存档内存地址的变量  

要想了解指针首先我们先要了解一些关于内存的知识

1、内存被划分为一个个小的单元,每个单元的大小为1字节
2、当我们需要访问到内存之中的内容时,就需要内存单元的编号——地址

3、指针和指针的类型

1、指针类型决定了指针在解引用的时候一次能访问几个字节 (指针类型限制指针权限),例如 int* 解引用可以访问4个字节,而 char* 解引用只能访问1个字节

2、指针类型决定了,指针向前或向后走一步,走多大的距离,单位是距离
在这里插入图片描述

4、野指针

4.1、野指针成因

1、指针未初始化
在这里插入图片描述
2、指针越界访问
在这里插入图片描述
3、指针指向的空间释放

  例如主函数的指针指向了 构造函数的局部变量的地址

4.2、如何避免野指针

1、初始化指针

int a = 10;
int* pa = &a;

或当不知道指针应该指向谁的时候,用空指针

int* p = NULL;

2、在使用指针之前一定要判断指针的有效性

在使用指针的时候,若指针不为空我们才去使用它,若指针为空我们就不使用它

在这里插入图片描述
3、小心指针越界
4、指针指向空间释放即使置NULL
在这里插入图片描述
5、避免局部变量返回的地址
在这里插入图片描述

5、指针运算

5.1、指针加、减整数的运算

举例如下
在这里插入图片描述

5.2、指针减指针

1、指针减去指针的前提是两个指针指向同一个空间
2、两个地址相减得到的结果的绝对值,是两个地址之间元素的个数
在这里插入图片描述

6、二级指针

在这里插入图片描述

7、指针数组

指针数组的本质是数组

在这里插入图片描述

小知识

1、地址的产生:
32位 – 32根地址线 --地址线是物理的电线 – 通电产生信号 0/1
64位 – 64根地址线 --地址线是物理的电线 – 通电产生信号 0/1

32位电脑上若是把地址存起来需要4个字节,64位则是8个字节
在这里插入图片描述
2、指针运用小练习
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、
局部变量不初始化的时候是随机值
全局变量不初始化的时候默认是 0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值