我有一个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]” 我该怎么办?感谢。
答案 0 :(得分:2)
那是因为函数one
的参数不是对结构的引用,而是实际数据(在堆栈上分配)。
尝试使用:
void one(Point *p) {
p->x = 1;
p->y = 1;
}
在任何情况下,声明为struct Point *mypointer[50]
的数组都不是指向点的数组,而是指向点的指针数组(必须逐个分配)。如果你希望只有一个点数组,你应该使用
Point points[50];
one(&points[i])