是否可以像处理Struct的成员一样处理数组的索引?

时间:2011-03-05 22:03:00

标签: objective-c c struct unions

所以我有这个由三个NSPoint结构组成的结构。

typedef struct AOTriangle_ {
    NSPoint a;
    NSPoint b;
    NSPoint c;
} AOTriangle;

在某些情况下,我希望将这些点作为a,b,c和其他情况作为索引引用到数组中。

像这样,

AOTriangle t;
t.a = NSMakePoint(0,0);
t.b = NSMakePoint(3,0);
t.c = NSMakePoint(0,4);

for(int i = 0; i < 3; ++i) {
    t[i].x += 5.0;
    t[i].y += 5.0;
}

这是我得到的最接近的,但你可以看到它并不是我想要的。 有没有办法在Objective-C中这样做?这是一种比我在下面做的更好的方式 - 也许是一个工会?

typedef struct AOTriangle_ {
    NSPoint a;
    NSPoint b;
    NSPoint c;
} AOTriangle;


AOTriangle t;
t.a = NSMakePoint(0,0);
t.b = NSMakePoint(3,0);
t.c = NSMakePoint(0,4);
NSPoint* t = (NSPoint*)&triangle;
for(int i = 0; i < 3; ++i) {
    t[i].x += 5.0;
    t[i].y += 5.0;
}

1 个答案:

答案 0 :(得分:3)

是的,您可以使用“union”。我相信声明会是这样的:

typedef struct AOTriangle_ {
    union {
        struct {
            NSPoint a;
            NSPoint b;
            NSPoint c;
        };
        NSPoint points[3];
    };
} AOTriangle;

union基本上是一种说法“我可以将此结构的成员称为abc,或{{{ 1}},points[0]points[1]。“

你会像这样使用它:

points[2]