0

我有一个 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]”我该怎么办?谢谢。

4

1 回答 1

2

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

尝试使用:

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

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

Point points[50];
one(&points[i])
于 2012-09-26T23:15:05.487 回答