课程进度 40% · 第8/18章第8/18章 · 标签 1/4
— 1 —
指针的基本概念
指针是 C++ 中非常重要的概念,它是一个变量,其值为另一个变量的内存地址。
cpp
1
// 指针声明和初始化
2
int num = 42;
3
int* ptr = # // 指针指向num的地址
4
int* nullPtr = nullptr; // 空指针
5
6
// 指针操作
7
cout << ptr; // 输出地址
8
cout << *ptr; // 解引用,输出42
9
*ptr = 100; // 通过指针修改值
10
11
// 指针与数组
12
int arr[5] = {10, 20, 30, 40, 50};
13
int* arrPtr = arr; // 指向数组第一个元素
14
cout << *arrPtr; // 输出10
15
cout << *(arrPtr + 2); // 输出30
16
17
// void指针
18
void* vptr = #
19
int* iptr = static_cast<int*>(vptr);
!使用前一定要初始化指针。解引用空指针或无效指针会导致程序崩溃
— 2 —
指针的算术运算
cpp
1
// 指针加减运算
2
int arr[] = {10, 20, 30, 40, 50};
3
int* p = arr;
4
5
p++; // 指向下一个元素(20)
6
p--; // 指向前一个元素(10)
7
p += 2; // 前进2个元素(30)
8
9
// 指针比较
10
int* start = arr;
11
int* end = arr + 5;
12
while (start < end) {
13
cout << *start << " ";
14
start++;
15
}
16
17
// 指针与 const
18
const int* p1; // 指向常量,不能修改值
19
int* const p2; // 常量指针,不能修改指向
20
const int* const p3; // 都不能修改
指针注意事项:
- 指针运算要小心边界问题
- 释放后的指针应立即设为 nullptr
- const 位置不同含义不同
- 数组名在表达式中退化为指针