C-传递和引用结构数组

时间:2012-09-26 23:11:23

标签: c pointers

我有一个Point结构的C代码:

typedef struct Point{
 int x, y;
} Point;

void one(Point P) {
 p.x = 1;
 p.y = 1;
}

我想创建一个指向50个点的数组的指针,然后将这些数组成员传递给一个函数。

我试过

struct Point (*mypointer)[50];
one(mypointer[i]);

但是得到了“预期的'Point'但是参数类型为'struct Point'” 然后我尝试引用指针

one(&mypointer[i])

但得到了“预期的'Point',但参数的类型为'struct Point(*)[(long unsigned int)N]” 我该怎么办?感谢。

1 个答案:

答案 0 :(得分:2)

那是因为函数one的参数不是对结构的引用,而是实际数据(在堆栈上分配)。

尝试使用:

void one(Point *p) {
 p->x = 1;
 p->y = 1;
}

在任何情况下,声明为struct Point *mypointer[50]的数组都不是指向点的数组,而是指向点的指针数组(必须逐个分配)。如果你希望只有一个点数组,你应该使用

Point points[50];
one(&points[i])