目录
本篇介绍:
- 指针是什么
- 指针和指针类型
- 野指针
一、指针是什么?
- 指针是内存中一个最小单元(内存单元、一个字节)的编号,也就是地址
- 我们平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量
总之:指针就是地址,口语中说的指针通常指的就是指针变量。
我们可以这样理解:
指针变量
我们可以通过&(取地址操作符)取出变量的内存起始地址,把地址可以存放到一个变量中,这个变量就是指针变量。
int main()
{
int a = 10;
//a变量占用四个字节的空间,这里是将a的四个字节的第一个字节的地址
//存放在p变量中,p是一个指针变量
int* p = &a;
return 0;
}
指针变量,用来存放地址的变量。
- 在32位机器上,地址是32个0或者1组成的二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小就应该是4个字节。
- 在64位机器上,地址是64个0或者1组成的二进制序列,那地址就得用8个字节的空间来存储,所以一个指针变量的大小就应该是8个字节。
所以:指针变量是用来存放地址的,地址是唯一标示一个内存单元的。
指针的大小在32位平台是4个字节,在64位平台是8个字节。
二、指针和指针类型
指针变量相应的类型:
char* pc = NULL; ——用来存放char类型的地址
int* pi = NULL; ——用来存放int类型的地址
short* ps = NULL; ——用来存放short类型的地址
long* pl = NULL; ——用来存放long类型的地址
float* pf = NULL; ——用来存放float类型的地址
double* pd = NULL; ——用来存放double类型的地址
指针类型的意义是什么?
指针的类型决定了指针向前或向后走一步有多大(距离)
三、野指针
3.1 野指针成因
3.1.1指针未初始化
3.1.2指针越界访问
3.1.3指针指向的空间释放
3.2如何规避野指针
3.2.1指针初始化
3.2.2小心指针越界
3.2.3指针指向空间释放,及时置NULL
3.2.4避免返回局部变量的地址
3.2.5指针使用之前检查有效性
这篇文章的内容到此结束!!!