导航菜单

C++编程/指针
课程进度 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 = &num;
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 位置不同含义不同
  • 数组名在表达式中退化为指针