指针变量的基本概念

指针是C++中存储内存地址的变量,通过指针可以直接访问或操作内存中的数据。指针的类型决定了它所指向内存中数据的解释方式。

声明与初始化指针

指针的声明需指定指向的数据类型,并用*符号标识。初始化时可直接赋值为某变量的地址或nullptr(空指针)。

int num = 10;
int *ptr = #  // 指向num的地址
int *nullPtr = nullptr;  // 空指针

指针的解引用

通过*操作符可以访问指针指向的内存数据,修改指针指向的值会影响原变量。

int value = *ptr;  // 获取ptr指向的值(10)
*ptr = 20;         // 修改num的值为20

指针的算术运算

指针支持加减运算,移动的距离由数据类型大小决定。常用于数组遍历。

int arr[3] = {1, 2, 3};
int *arrPtr = arr;
cout << *(arrPtr + 1);  // 输出第二个元素(2)

指针与动态内存分配

使用newdelete操作符动态分配和释放内存,避免内存泄漏。

int *dynamicPtr = new int(5);  // 动态分配内存并初始化为5
delete dynamicPtr;             // 释放内存

指针与数组

数组名本质是首元素的指针,但数组名不可重新赋值(如arr = new int[3]非法)。

char str[] = "Hello";
char *strPtr = str;  // 指向数组首地址
cout << strPtr[1];   // 输出 'e'

指针的安全注意事项

  • 避免野指针:指针未初始化或释放后未置空。
  • 检查空指针:解引用前验证指针是否为nullptr
  • 防止内存泄漏:确保new分配的内存最终被delete释放。

示例综合代码

#include <iostream>
using namespace std;

int main() {
    int a = 5;
    int *p = &a;
    cout << *p << endl;  // 输出5

    int *arr = new int[3]{1, 2, 3};
    cout << arr[1] << endl;  // 输出2
    delete[] arr;

    return 0;
}

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐