C/C++指针核心概念与实战详解

追风的人
追风的人
发布时间:2026-10-13| 3人浏览过
原创

本文系统讲解C/C++指针的定义、初始化、间接引用规则及常量修饰用法。内容涵盖堆内存的动态申请与释放(malloc/new/delete)、指针算术运算及其在数组遍历中的应用,并深入剖析指针作为函数参数的两种实现方式(直接传址与引用),结合希尔排序案例说明其在实际编程中的价值。

什么是C/C++指针

指针是一种存储内存地址的特殊变量。在程序运行期间,变量和常量都占用特定的内存空间,指针的作用就是记录这些数据的起始地址。通过指针,程序可以直接读取或修改指定地址中的数据,这也是C/C++能够高效操作内存的基础。

以图解为例,假设内存中定义了三个变量 a、b、c,分别占据不同的字节位置。如果我们定义三个指针 p1、p2、p3 分别指向这三个变量:

  • p1 存储的是变量 a 的首地址(如 0x00);
  • p2 存储的是变量 b 的地址(如 0x02);
  • p3 存储的是变量 c 的地址(如 0x04)。

指针类型的意义

仅存储地址是不够的,必须明确读取多少个字节。指针的类型决定了其解引用的范围:

  • int* 指针:读取时会自动向后延伸 4 个字节(以32位/64位典型环境下的 int 为例);
  • float* 指针:会根据 float 的大小读取对应字节数。

总结来说,一个完整的指针包含两个要素:指针类型和所指变量的首地址。

定义与初始化指针变量

为保证程序安全,定义指针变量时建议直接初始化,避免指向未知的随机内存区域。

/* 定义一个指向 int 类型变量 a 的指针 p */
int a = 3;
int *p;      
p = &a;      // 将 a 的地址赋值给 p

/* 注意以下写法虽语法允许,但通常不建议用于普通变量 */
*p = 28;     // 等价于 a = 28;
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。