Logo
Section 1 / 8

内存地址

学习变量在内存中的存储方式,以及如何获取特定变量的地址。

导入

内存地址

学习变量在内存中的存储方式,以及如何获取特定变量的地址。

学习指针是掌握C语言过程中最大的障碍。指针的概念本身很简单,真正困难的是与之相关的术语(专业用语)。

计算机的内存

计算机的内存(RAM)由数百万个存储单元组成。每个单元都有一个对应的编号,这个编号也被称为地址、引用或单元号。

...
计算机的内存

变量与内存

我们通过一个简单的例子来开始学习指针。点击 RUN 按钮,查看下面代码的运行结果:

1#include <stdio.h> 2 3int main() { 4 // 声明并初始化变量 i 5 int i = 3; 6 printf("i 的地址 = %p\n", (void*)&i); 7 printf("i 的值 = %d\n", i); 8 printf("i 的值 = %d\n", *( &i )); 9 return 0; 10}

📝 注意: 每次运行该程序时,你得到的地址数值都会不同。

第5行: 当我们使用 int i = 3 创建一个变量时,编译器会从内存中选择一个位置(例如 4096),将值 3 存入该位置,并将名称 i 与该位置关联起来。我们无法控制编译器具体为 i 分配哪个内存位置。

...
变量在计算机内存中的存储

第6行: 一旦分配了内存位置,我们就可以通过表达式 &i 获取其地址编号,其中 & 称为取地址操作符。&i 就会返回该变量的地址,比如 4096。取地址操作符 & 用于获取某个变量在内存中的地址。

第7-8行: 要获取地址 4096 处存储的值,我们可以直接使用变量 i,也可以使用表达式:*( &i )。间接访问操作符 * 用于获取指定地址处存储的值。它也被称为地址内容操作符。

简介

指针简介