【发布时间】:2014-02-04 04:51:12
【问题描述】:
如何使用指针算法访问结构数组?
假设我有一个结构
struct point{
int x;
int y;
}collection[100];
假设我有一个函数
int func(struct point *collection,int size)
在这个函数中,我访问了如下所示的元素。
collection[0].x
这和*(collection + 0).x一样吗?既然.操作符比*操作符优先级高,那么先把集合指针加0,再应用点操作符,然后指针解引用?不知何故,这没有意义;任何澄清表示赞赏。
【问题讨论】:
-
如果你真的想烤你的面条,你能弄清楚
0[collection].x是什么吗? -
@Eric Lippert (*(0 + collection)).x,根据我收集的 [] 运算符的意思...a[5] = *(a+5) 所以 5[a]表示 *(5+a) 因此 0[collection].x 与 collection[0].x 相同,我花了一些时间,我做对了吗。
-
你明白了!索引只是一种花哨的加法,加法是可交换的。
标签: c arrays pointers structure