1. 内存与指针基础概念
在计算机系统中,内存是程序运行时存储数据和指令的关键组件。当我们谈论8GB、16GB或32GB内存时,实际上指的是计算机可用的物理内存容量。这些庞大的内存空间如何被高效管理和访问呢?答案就在于内存编址和指针机制。
1.1 内存单元的组织方式
现代计算机将内存划分为连续的内存单元,每个单元的大小通常为1字节(Byte)。这种组织方式具有以下特点:
- 基本存储单位:1字节由8个比特位(bit)组成,每个比特位可存储一个二进制值(0或1)
- 地址标识:每个内存单元都有唯一的编号,称为内存地址或指针
- 层级关系:
- 1 Byte = 8 bit
- 1 KB = 1024 Byte
- 1 MB = 1024 KB
- 1 GB = 1024 MB
- 1 TB = 1024 GB
- 1 PB = 1024 TB
1.2 地址总线的关键作用
CPU通过地址总线与内存进行通信,这种硬件设计决定了系统的寻址能力:
- 32位系统:具有32根地址总线,可表示2^32(约4GB)个独立地址
- 64位系统:地址总线扩展到64根,理论上可寻址2^64字节的内存空间
- 寻址原理:每根地址线传输0或1信号,组合起来形成完整的地址编码
注意:实际可用的内存空间还受操作系统和硬件限制,32位系统通常只能使用约3.2-3.5GB物理内存
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 指针变量基础操作
2.1 取地址与指针变量声明
在C语言中,我们可以通过取地址操作符(&)获取变量的内存地址:
c复制int a = 10;
printf("%p\n", &a); // 输出变量a的地址
指针变量是专门用于存储地址的特殊变量,其声明格式为:
c复制数据类型 *指针变量名;
例如:
c复制int *pa = &a; // 整型指针
char *pc = &ch; // 字符指针
2.2 指针解引用操作
通过解引用操作符(*)可以访问指针指向的内存内容:
c复制int b = *pa; // 获取pa指向的值
*pa = 20; // 修改pa指向的值
