C-传递和延迟结构数组

C-传递和延迟结构数组,c,pointers,C,Pointers,我有一个点结构的C代码: typedef struct Point{ int x, y; } Point; void one(Point P) { p.x = 1; p.y = 1; } 我想创建一个指向50个点的数组的指针,然后将这些数组成员传递给one函数 我试过了 struct Point (*mypointer)[50]; one(mypointer[i]); 但得到“预期的'Point',但参数的类型为'struct Point'” 然后我试着推迟指针 one(&m

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

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

void one(Point P) {
 p.x = 1;
 p.y = 1;
}
我想创建一个指向50个点的数组的指针,然后将这些数组成员传递给one函数

我试过了

struct Point (*mypointer)[50];
one(mypointer[i]);
但得到“预期的'Point',但参数的类型为'struct Point'” 然后我试着推迟指针

one(&mypointer[i])
但得到“应为'Point',但参数的类型为'struct Point(*)[(长无符号整数)N]”
我该怎么办?谢谢。

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

尝试使用:

void one(Point *p) {
 p->x = 1;
 p->y = 1;
}
在任何情况下,声明为
struct Point*mypointer[50]
的数组都不是指向点的数组,而是指向点的指针数组(必须逐个分配)。如果您只希望有一个指向点的数组,则应使用

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

数组实际上声明为
Point(*mypointer)[50]
,它是指向50个
点的数组的指针,而不是指针数组。数组不是指针。