【发布时间】:2012-07-17 02:37:53
【问题描述】:
我正在用 C 语言编写并使用 GCC 进行编译。
有没有更好的方法来声明积分。我很惊讶地看到点是一个数组。有什么方法可以声明点,让它看起来更像一个数组。
typedef struct Span
{
unsigned long lo;
unsigned long hi;
} Span;
typedef struct Series
{
unsigned long *points;
unsigned long count;
unsigned long limit;
} Series;
void SetSpanSeries(Series *self, const Span *src)
{
unsigned long *points;
if (src->lo < src->hi )
{
// Overlays second item in series.
points = self->points; // a pointer in self structure
points[0] = src->lo;
points[1] = src->hi;
self->count = 1;
}
}
现在让我们说点指向一个数组结构。
typedef struct Span
{
unsigned long lo;
unsigned long hi;
} Span;
span *points[4];
现在我该如何编写这些代码行?我做对了吗?
points = self->points; // a pointer in self structure
points[0].lo = src->lo;
points[0].hi = src->hi;
【问题讨论】:
-
尽量避免将制表符粘贴到代码块中。他们往往会弄乱格式。
-
+1 因为我的答案最终比我想象的要长得多。
-
当我复制这些标签时,它们的行为有点奇怪。下次我必须摆脱标签。
-
不,鉴于声明
unsigned long *points;,points是不是一个数组。它是一个指针(因为你是这样声明的)。它可能恰好指向数组的第一个元素。强烈建议阅读:comp.lang.c FAQ 的第 6 节。