【笔记】C++的指针

前言

C++的指针学习笔记

指针的作用

  • 通过指着间接访问内存

定义指针

  • 定义对应变量的指针,指针的数据类型要与对应变量的数据类型相同
  • 通过取址符号&得到对应变量的内存地址,将内存地址作为指针的值
  • 指针可以像变量一样,先定义后赋值,或者定义时直接赋值
1
2
3
4
5
6
数据类型 变量名 = 值;

数据类型 * 指针名;
指针名 = &变量名;

数据类型 * 指针名 = &变量名;

使用指针

  • 通过解引用的操作得到指针指向的数据
  • 实际上作用和原数据的变量名相同
1
2
3
变量名;

*指针名;

指针占用的内存空间

  • 32位系统下占用4个字节
  • 64位系统下占用8个字节

空指针

  • 指针变量为0的指针为空指针,空指针不可被访问

0~255的内存地址是被系统占用的,应用程序不可访问

1
2
3
*指针名 = NULL;

*指针名 = 0;

野指针

  • 指针指向为非法的内存空间时的指针为野指针

const修饰的指针

常量指针

  • 常量指针可以修改指针,但是不能修改指针指向的值,相当于指向了常量
1
const 指针类型 * 指针名 = &变量名;

指针常量

  • 指针常量不可以修改指针,但是可以修改指针指向的值,相当于自身是一个常量
1
指针类型 * const 指针名 = &变量名;

const同时修饰指针和常量

  • 不可以修改指针,也不可以修改指针指向的值
1
const 指针类型 * const 指针名 = &变量名;

利用指针访问数组元素

1
2
3
4
5
int arr[2] = {1, 2};
// 访问第一个元素
int *p = arr;
// 访问第二个元素(向后偏移了1个int的字节数)
*p++;

利用指针传递函数的参数

  • 地址传递
1
2
3
4
5
6
7
8
9
10
11
返回值类型 函数名(数据类型 *形参名)
{
return 返回值;
}

int main()
{
数据类型 变量名 = 值;
函数名(&变量名);
return 0;
}

完成

参考文献

哔哩哔哩——黑马程序员