[开发资料] 指针链

[复制链接]
 楼主| AdaMaYun 发表于 2024-3-5 20:50 | 显示全部楼层 |阅读模式
指针链经常被用于访问结构数据。例如,常用的代码如下:

  1. typedef struct { int x, y, z; } Point3;
  2. typedef struct { Point3 *pos, *direction; } Object;

  3. void InitPos1(Object *p)
  4. {
  5.    p->pos->x = 0;
  6.    p->pos->y = 0;
  7.    p->pos->z = 0;
  8. }
复制代码

然而,这种的代码在每次操作时必须重复调用p->pos,因为编译器不知道p->pos->x与p->pos是相同的。一种更好的方法是缓存p->pos到一个局部变量:

  1. void InitPos2(Object *p)
  2. {
  3.    Point3 *pos = p->pos;
  4.    pos->x = 0;
  5.    pos->y = 0;
  6.    pos->z = 0;
  7. }
复制代码

另一种方法是在Object结构中直接包含Point3类型的数据,这能完全消除对Point3使用指针操作。

LOVEEVER 发表于 2024-3-9 21:12 | 显示全部楼层
在Object结构中直接包含Point3类型的数据,这能完全消除对Point3使用指针操作。
星辰大海不退缩 发表于 2024-3-11 10:15 | 显示全部楼层
指针链经常被用于访问结构数据
OKAKAKO 发表于 2024-3-11 20:19 | 显示全部楼层
指针的使用一定要注意过程的选择以及细节数据结构
小小蚂蚁举千斤 发表于 2024-3-18 16:38 | 显示全部楼层
在Object结构中直接包含Point3类型的数据,这能完全消除对Point3使用指针操作
小夏天的大西瓜 发表于 2024-3-18 19:00 | 显示全部楼层
编译器不知道p->pos->x与p->pos是相同的。一种更好的方法是缓存p->pos到一个局部变量
中国龙芯CDX 发表于 2024-3-21 15:23 | 显示全部楼层
指针链经常被用于访问结构数据
jf101 发表于 2024-3-22 11:28 | 显示全部楼层
指针链与链表数据结构应该是异曲同工
szt1993 发表于 2024-3-25 15:34 | 显示全部楼层
指针链经常被用于访问结构数据
您需要登录后才可以回帖 登录 | 注册

本版积分规则

299

主题

2492

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部