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

文章目录

  • 1、引言
  • 2、指针是什么
  • 3、指针和指针的类型
  • 4、野指针
    • 4.1、野指针成因
    • 4.2、如何避免野指针
  • 5、指针运算
    • 5.1、指针加、减整数的运算
    • 5.2、指针减指针
  • 6、二级指针
  • 7、指针数组
  • 小知识

1、引言

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

2、指针是什么

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

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

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

3、指针和指针的类型

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

2、指针类型决定了,指针向前或向后走一步,走多大的距离,单位是距离
【C语言/C++】初阶指针_第1张图片

4、野指针

4.1、野指针成因

1、指针未初始化
【C语言/C++】初阶指针_第2张图片
2、指针越界访问
【C语言/C++】初阶指针_第3张图片
3、指针指向的空间释放

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

4.2、如何避免野指针

1、初始化指针

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

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

int* p = NULL;

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

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

【C语言/C++】初阶指针_第4张图片
3、小心指针越界
4、指针指向空间释放即使置NULL
【C语言/C++】初阶指针_第5张图片
5、避免局部变量返回的地址
【C语言/C++】初阶指针_第6张图片

5、指针运算

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

举例如下
【C语言/C++】初阶指针_第7张图片

5.2、指针减指针

1、指针减去指针的前提是两个指针指向同一个空间
2、两个地址相减得到的结果的绝对值,是两个地址之间元素的个数
【C语言/C++】初阶指针_第8张图片

6、二级指针

【C语言/C++】初阶指针_第9张图片

7、指针数组

指针数组的本质是数组

【C语言/C++】初阶指针_第10张图片

小知识

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

32位电脑上若是把地址存起来需要4个字节,64位则是8个字节
【C语言/C++】初阶指针_第11张图片
2、指针运用小练习
【C语言/C++】初阶指针_第12张图片
【C语言/C++】初阶指针_第13张图片
【C语言/C++】初阶指针_第14张图片

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

你可能感兴趣的:(c++,c语言,开发语言)