第八章——地址和指针 第五节——指针的比较

第八章——地址和指针 第五节——指针的比较

亓翎_Re-Tikara Lv5

指针的比较

核心概念

想象你手上有两个快递单号(指针),比较这两个地址的位置关系:

  • 同一条街的对比:就像比较同一排房子的门牌号(同一数组)
  • 不同城市的对比:比较不同街道的门牌号毫无意义(不同数组指针)

代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>

int main() {
int arr[5] = {10, 20, 30, 40, 50};
int *p = &arr[0]; // 指向第一个房子
int *q = &arr[3]; // 指向第四个房子

// 生活场景:快递员送餐路线比较
if(p < q) {
printf("p指向的地址比q更靠近街道入口\n"); // 实际是内存地址的高低
}

// 空指针检查:确认地址是否有效
int *temp = NULL;
if(temp == NULL) {
printf("这个地址是空的,不能送快递!\n");
}

return 0;
}

生活举例

场景一:图书馆找书

  假设你在图书馆找书:

  • 正确对比:比较同一排书架的编号(同一数组)
    • “A区3号架”和”A区5号架”谁离入口近?
  • 错误对比:比较不同楼栋的书架编号(不同数组)
    • 比较”主楼A3”和”分楼B2”谁离入口近是没意义的

场景二:快递投递

  想象你是外卖小哥:

  • 有效比较:查看两个订单是否在同一栋楼
1
2
3

if(order1.building == order2.building)
// 同一栋楼才能比较楼层
  • 空指针检查:确认订单地址是否有效
1
2
if(order != NULL) 
// 确认不是虚构的订单地址

注意事项

  1. 无效对比就像:
  • 比较北京朝阳区和上海浦东新区的门牌号大小
  • 试图用GPS定位比较纸质书的页码
  1. 空指针陷阱:
  • 就像拿着写有”火星1号”的地址去送餐(NULL指针)
  • 或者地址栏写着”宇宙中心”的虚假信息(野指针)
  1. 比较结果:
  • 内存地址数值大小与变量值无关
  • 类似于门牌号666和888不代表住户财富多少
  • 标题: 第八章——地址和指针 第五节——指针的比较
  • 作者: 亓翎_Re-Tikara
  • 创建于 : 2026-02-07 02:21:28
  • 更新于 : 2026-02-10 02:48:46
  • 链接: https://re-tikara.fun/Blog/posts/4fb3113c/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。