C++指针

指针是C/C++中一个非常重要的概念,正确理解和使用指针可以大大提高C/C++编程效率。下面我将通过四个部分来全面介绍C++中的指针知识。

一、指针的基本概念

指针是一个变量,用于存储另一个变量的内存地址。例如:

int a = 10;
int* p = &a; 

这里p就是一个指针,它存储了变量a的地址,也就是0x7ffd40612490(该地址仅为示例)。可以通过解引用*来访问指针指向的对象:

cout << *p << endl; // 输出10

NULL指针是一个特殊的值,表示指针没有指向任何对象。指针需要初始化后才能解引用访问对象。

二、指针的运算

指针支持如下四种运算:

  1. 访问指向的对象:*p
  2. 取指针地址:&p
  3. 指针赋值:p = &a
  4. 指针偏移:p++、p+=2等

按照数据类型长度偏移指针,可以访问数组和对象的不同位置:

int arr[5] = {1, 2, 3, 4, 5};
int* p = arr; // p指向数组第一个元素 
p++; // p现在指向第二个元素,即数字2

三、指针常见用途

  1. 动态内存分配:
int* p = new int(10);
  1. 访问数组元素:
int arr[5] = {1, 2, 3, 4, 5};
int* p = arr;
cout << *p << endl; // 输出1
  1. 作为函数参数:
void func(int* ptr);

四、指针使用注意事项

  • 检查指针是否为空
  • 指针越界会产生未定义行为
  • 用delete释放动态内存
  • 指针有作用域,离开作用域会失效
  • 尽量使用智能指针如std::shared_ptr管理生命周期

指针是C/C++编程中一个重要而有用的概念。正确理解和应用指针,可以写出更高效的代码。同时需要注意安全性,慎用裸指针,避免产生悬挂指针等问题。合理使用指针能大大提升C++编程能力。