在考研408《计算机组成原理》与《数据结构》中指针是连接内存模型、数组、链表、树等核心知识的纽带也是选择题与代码分析题的高频考点。结合408考纲要求本文梳理必须掌握的核心内容剔除超纲细节帮你精准抓分。一、内存与地址指针的底层基础计组考点408常从「内存编址」角度考察指针本质需要明确3个等价关系内存单元编号 地址 指针核心结论内存按字节编址每个字节对应唯一地址32位机器可寻址 232个地址对应4GB内存空间64位机器可寻址 264个地址。变量本质是内存中的一段连续空间比如int占4字节存储时取首字节地址作为变量的地址。CPU通过地址总线传输地址信号内存根据地址返回对应数据这是指针能访问内存的硬件基础。二、指针变量C语言层面的定义数据结构/算法考点1. 基本操作操作符号作用示例取地址获取变量的首字节地址int a10; int *pa;解引用*通过地址访问指向的变量*p 20; // 等价于 a202. 指针大小高频选择题指针变量的大小与类型无关只和机器位数有关32位平台地址32位指针占4字节64位平台地址64位指针占8字节⚠️ 易错点char*和double*在同一个平台下大小完全相同。三、指针类型的意义408代码题常考虽然指针大小相同但类型决定了指针的访问权限和步长是408代码分析题的核心解引用权限char*解引用只能访问1个字节int*解引用访问4个字节以此类推。指针±整数p1跳过的字节数 sizeof(指针指向的类型)。比如int *p加1跳过4字节char *p加1跳过1字节。void*泛型指针可以接收任意类型地址但不能直接解引用或做±运算常作为函数参数实现通用逻辑比如后续链表、树的通用遍历接口。四、const修饰指针易混选择题const位置不同限制的对象完全不同记住一句话即可写法限制对象能否修改指向的内容能否修改指针本身const int *p指向的内容❌ 不能✅ 能int * const p指针本身✅ 能❌ 不能const int * const p内容和指针❌ 不能❌ 不能408常考场景用const修饰函数参数比如my_strlen的const char* str避免函数内部误修改原数据。五、指针运算数组/链表题基础408只要求掌握3种运算全部和内存连续性相关指针±整数用于遍历数组比如pi就是数组第i个元素的地址。指针-指针结果是两个指针之间的元素个数仅适用于指向同一数组的指针比如arr[9] - arr[0] 9。指针关系运算仅允许同类型指针比较大小常用于数组遍历边界判断比如p arr10。六、野指针考纲要求的错误规避野指针是指向未知内存的指针是408「程序改错」题的高频考点成因和规避方法必须背熟成因规避方法未初始化不知道指向时初始化为NULLNULL是值为0的空指针不能直接访问越界访问指针访问范围不超过申请的内存比如数组不能访问下标≥长度的元素指向已释放的局部变量禁止返回局部变量的地址悬空指针指针不再使用时及时置为NULL使用前先判断if(p ! NULL)七、传值调用 vs 传址调用算法题核心这是408「函数设计题」的必考点直接决定算法能否正确修改外部变量调用方式传递内容能否修改实参适用场景传值调用变量的值❌ 不能只需要使用变量值做计算比如求两数之和传址调用变量的地址✅ 能需要修改外部变量比如交换变量、链表节点插入删除经典例题交换两个变量的值必须用传址调用传值调用只会修改函数内部的临时形参不影响原变量。408备考提示选择题常考「指针大小、const修饰、指针运算结果」直接套上述结论即可代码分析题常结合数组、链表考察指针遍历重点看p、*p的执行逻辑算法题如果需要修改主函数中的变量比如链表的头指针必须用传址调用否则会丢分。