亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

C++ 指针精通:核心概念、代码示例与实战应用

什么是指针?

C++ 指针是存储另一变量内存地址的变量。指针的类型必须与其指向的数据类型匹配。例如 int* 只能存放 int 对象的地址。

指针让程序直接操作内存中的数据,支撑高效数据结构、动态分配和按引用调用语义。

理解内存地址

每个变量在内存中占据唯一位置。取地址运算符 & 获取该地址。对变量 x,&x 即其内存位置。

指针声明语法

声明遵循模式:

datatype *pointer_name;

示例:

int *p;     // 指向 int 的指针
double *d;  // 指向 double 的指针
char *c;    // 指向 char 的指针

取地址(&)与解引用(*)

& 运算符给出变量地址;* 运算符取出该地址存储的值。

#include <iostream> using namespace std; int main() { int x = 27; int *ip = &x; cout << "Value of x: " << x << endl; cout << "Address of x: " << ip << endl; cout << "Value via pointer: " << *ip << endl; return 0; }

输出:

Value of x: 27
Address of x: 0x7ffeefbff5ac
Value via pointer: 27

指针与数组

数组名退化为指向首元素的指针。因此:

int arr[5]; int *p = arr;      // 正确
int *q = &arr;  // 错误 – &arr 得到整个数组的地址而非首元素

用指针遍历数组:

#include <iostream> using namespace std; int main() { int *p; int arr[] = {10, 34, 13, 76, 5, 46}; p = arr; for (int i = 0; i < 6; ++i) { cout << *p++ << endl; } return 0; }

输出:

10 34 13 76 5 46

空指针

指针无有效目标时,应初始化为 NULL(C++11 起推荐 nullptr),防止误解引用。

#include <iostream> using namespace std; int main() { int *ip = nullptr; cout << "ip = " << ip << endl; // 打印 0 return 0; }

函数中使用指针

向函数传递指针允许函数修改原变量,实现按引用调用。

#include <iostream> using namespace std; void modify(int *p1, int *p2) { *p1 = 10; *p2 = 11; } int main() { int a = 5, b = 5; cout << "Before: a=" << a << ", b=" << b << endl; modify(&a, &b); cout << "After: a=" << a << ", b=" << b << endl; return 0; }

输出:

Before: a=5, b=5
After: a=10, b=11

指针的优势

快速总结

C语言

  1. C++ 数组完全指南:声明、初始化、多维数组与指针技巧
  2. C++ do-while 循环详解:语法、实战示例与嵌套循环
  3. C++ 指针精通:核心概念、代码示例与实战应用
  4. C++ char 类型完全指南:声明、ASCII 码、输入输出与字符串转换
  5. C++ 运算符重载实战指南:语法、方法、限制与代码示例
  6. C++ 结构体详解:定义、初始化、指针、函数参数与局限性
  7. 掌握 C++ std::list:语法、函数与实战示例
  8. C++ 函数详解:从声明到调用的实战指南
  9. C# 集合实战教程:ArrayList、Stack、Queue、Hashtable 等核心类型全解析
  10. C 语言指针完全指南:类型、用法与最佳实践
  11. C 语言指针实战:从入门到高级编程
  12. C++变量类型详解:内存布局、取值范围与操作集