C++ 指针学习笔记
1. 指针的基本概念
- 作用:指针是一个存储变量内存地址的变量,可以用来间接访问和操作内存中的数据。
- 声明:使用
*
符号来声明指针变量,指针变量存储的是所指向变量的地址。
示例代码:
int* ptr; // 声明一个整型指针变量
2. 指针的初始化
- 空指针:将指针初始化为
nullptr
或NULL
表示该指针不指向任何有效的内存地址。 - 指向变量:将指针初始化为某个变量的地址。
示例代码:
int* ptr = nullptr; // 初始化为空指针
int num = 10;
int* ptrToNum = # // 初始化为 num 的地址
3. 指针的解引用
- 作用:通过指针访问所指向内存地址的值,使用
*
运算符进行解引用操作。 - 修改值:可以通过解引用操作修改所指向内存地址的值。
示例代码:
int num = 10;
int* ptr = # // ptr 指向 num 的地址
int value = *ptr; // 解引用 ptr,获取 num 的值
*ptr = 20; // 修改 num 的值为 20
4. 指针的算术运算
- 指针加法:指针加上一个整数值,会将指针移动对应字节大小的内存地址。
- 指针减法:指针减去一个整数值,同样会移动指针对应字节大小的内存地址。
示例代码:
int arr[] = {1, 2, 3, 4, 5};
int* ptr = arr; // 指向数组第一个元素的指针
ptr++; // 指针移动到下一个元素的地址
5. 指针和数组
- 数组名和指针:数组名在大多数情况下会被隐式转换为指向数组首元素的指针。
- 指针遍历数组:可以通过指针对数组进行遍历,实现数组的访问和操作。
示例代码:
int arr[] = {1, 2, 3, 4, 5};
int* ptr = arr; // 指向数组第一个元素的指针
for (int i = 0; i < 5; ++i) {
cout << *(ptr + i) << " "; // 使用指针遍历数组
}
通过学习和理解指针的概念、初始化、解引用和算术运算,我们可以更好地进行内存管理和数据操作,提高程序的灵活性和效率。