目录
一、背景
指针是C++编程语言中的一个基本且强大的概念。它们用于存储另一个变量的内存地址,从而允许程序在内存中直接访问和修改数据。
二、C++指针的重要概念和使用方法
2.1、声明指针
指针的声明使用类型名后跟一个星号(*),然后是指针的名称。例如:
int* p;
这声明了一个指向int类型变量的指针p。
2.2、指针的初始化
指针在声明时可以初始化为一个变量的地址,使用取地址运算符(&):
int var = 42;
int* p = &var; // p现在指向var的地址
2.3、 使用指针
通过解引用运算符(*
),可以访问指针所指向的变量的值:
int var = 42;
int* p = &var;
int value = *p; // value现在是42
通过指针也可以修改所指向变量的值:
通过指针也可以修改所指向变量的值:
2.4、空指针
指针可以被初始化为nullptr
,表示它不指向任何有效的内存地址:
int* p = nullptr;
2.5、 指针的比较
指针可以进行比较(相等、不等运算),这通常用于检查指针是否指向同一个地址:
if(p == nullptr) {
// 指针p是空指针
}
2.6、 动态内存分配
C++使用new
和delete
操作符来分配和释放动态内存:
int* p = new int; // 动态分配一个int
*p = 42;
delete p; // 释放动态分配的内存
int* arr = new int[10]; // 动态分配一个包含10个int的数组
delete[] arr; // 释放数组
2.7、 指针数组
指针可以指向一个数组的第一个元素:
int arr[3] = {1, 2, 3};
int* p = arr; // 等价于 p = &arr[0]
通过指针可以遍历数组:
for(int i = 0; i < 3; ++i) {
std::cout << *(p + i) << std::endl; // 输出数组的每个元素
}
2.8、 函数中的指针参数
指针可以作为函数参数传递,以实现引用传递:
void increment(int* p) {
(*p)++;
}
int main() {
int a = 42;
increment(&a); // a现在是43
return 0;
}