【发布时间】:2016-11-11 09:36:47
【问题描述】:
我正在尝试反向循环遍历structs 的数组,但不太清楚如何去做。这就是我正常循环的方式:
struct Thing* ptr = things;
struct Thing* endPtr = things + sizeof(things)/sizeof(things[0]);
for(ptr < endPtr)
{
// do stuff
}
【问题讨论】:
-
什么是
things?为什么不使用 indexes 来代替循环呢? -
ptr[(sizeof(things)/sizeof(things[0]))-1]是最后一个元素,所以从那个开始到 0 索引... -
“
for”.... 新的“while”。 -
@WhozCraig
#define for while。奇迹般有效。它还允许我做do {...} for (ptr < endPtr);:) -
通过消除
for语句的正常使用来模糊代码是一个非常糟糕的主意。实际上,发布的代码无法编译,这一行:struct Thing* endPtr = things + sizeof(things)/sizeof(things[0]);产生一个指向数组末尾的指针,而不是指向最后一个元素的指针