0

ポイント構造のCコードは次のとおりです。

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

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

50ポイントの配列へのポインターを作成し、これらの配列メンバーの一部を1つの関数に渡したいと思います。

私は試した

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

しかし、「期待される'ポイント'が引数はタイプ'structPoint'」になりました。次に、ポインタを延期してみました。

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]、ポイントへの配列ではなく、ポイントへのポインターの配列です(1つずつ割り当てる必要があります)。ポイントへの配列だけが必要な場合は、次を使用する必要があります

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