跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C

C 语言指针基础:内存寻址与变量访问

C 语言指针是存储内存地址的特殊变量。文章解析内存字节编号即地址的概念,区分直接访问与间接访问方式。通过代码示例演示指针变量定义、取地址及解引用操作,强调基类型匹配规则,防止将数值误赋给指针导致类型错误。

Stephaine Walsh发布于 2018/3/28更新于 2026/9/1060 浏览
C 语言指针基础:内存寻址与变量访问

内存区与指针

内存区的每一个字节都有一个编号,这就是地址。在 C 语言中,访问元素主要有直接访问和间接访问两种方式。

直接访问

如 a = 5;。系统在编译时已经对变量分配了地址。例如,若变量 a 分配的地址是 2000,则该语句的作用就是把常数 5 保存到地址为 2000 的单元。

间接访问

如 scanf("%d", &a);。调用函数时,把变量 a 的地址传递给函数 scanf。函数首先把地址保存到一个单元中,然后把从键盘接收到的数据通过所存储的地址保存到 a 变量中。

指针的定义与使用

在 C 语言中,指针是一种特殊的变量,它是存放地址的。假设我们定义了一个指针变量 int *pointer 用来存放整型变量 i 的地址:

int i = 2000;
int *pointer; // 定义指针变量
pointer = &i; // 获取地址并赋值
printf("%d\n", *pointer); // 解引用取值

指针和指针变量的区别

  1. 指针:知道一个变量的地址,就可以通过地址来访问变量。因此,变量的地址称为该变量的指针,指针本质上就是地址。
  2. 指针变量:C 语言中可以定义一类特殊的变量,这些变量专门用来存放变量的地址,称为指针变量。

使用指针变量时的注意事项

  • 指针变量前面的 *,表示该变量的类型为指针变量。例如,int *pointer;。
  • 在定义指针变量时,必须指定基类型。基类型指针指向变量的类型。
  • 将 float 变量的地址放到指向整型变量的指针变量中是错误的。指针变量中只能存放地址,不要把值直接赋值给指针变量。&a 表示变量 a 的地址。

理解了指针的概念,就能更好地掌握 C 语言的内存管理机制,这也是后续学习复杂数据结构的基础。

目录

  1. 内存区与指针
  2. 指针的定义与使用
  3. 指针和指针变量的区别
  4. 使用指针变量时的注意事项

更多推荐文章

查看全部
  • 基于 Vivado 的 AD9680 FPGA 测试程序开发
  • WebView 与 Android View 体系深度对比:绘制、事件与渲染机制
  • Llama-3.2-3B 部署优化:Ollama 配置上下文窗口与 Token 限制详解
  • DEIM 实时目标检测算法与 Visdrone2019 数据集实战
  • PX4 与 ROS 集成:无人机 Offboard 控制模式解析与实战
  • 昇腾 NPU 部署 Llama 2 模型:性能测试与优化实战
  • ARINC 825 航空总线协议核心问答
  • Python 基于 rocketmq-client-python 构建高效 RocketMQ 消息系统
  • Windows Python 安装与配置教程
  • 基于 DeepFace 和 OpenCV 的情绪分析器
  • Java 核心面试知识点与实战解析
  • 动态规划经典题型:斐波那契数列及变种应用
  • OpenClaw Gateway 安装失败 systemctl --user is-enabled unavailable 排查与解决
  • Mac 修图效率提升指南:Luminar Neo v1.25.1 核心功能实测
  • 宇树 G1 机器人 FAST-LIO 建图及 RViz 配置指南
  • AgentScope Java 多智能体框架
  • OpenClaw 在 Ubuntu 22.04 部署及对接百炼模型指南
  • Java 自定义等级字符串比较逻辑分析
  • Spring Boot 数据访问与数据库集成实战
  • Qoder AI 编码工具功能详解

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online