0

構造体の構造体配列にアクセスする必要がある C プログラムを作成しています。

定義は以下のようになります

struct def_world
{
    bool lock;
    char tilemap;
    def_tile tile[100][100];
struct def_tile
{
    bool lock;
    char kind;
    def_obj * obj;
    void * evt;
};
struct def_obj
{
    bool lock;
    int indexOfTable;
    bool frozen;
    char x,y;
    char kind;
    char face;
    char * msg;
    char * ip;
};

tile[3][3]main 関数で、worldの obj の faceにアクセスしたい。

私は世界を次のように初期化します

def_world world={0,};

しかし、次の行はエラーになります

world.tile[3][3].obj=newobj();//newobj() returns def_obj type

world.tile[3][3].obj->face;

obj の顔にアクセスする方法はありますか?

4

1 に答える 1

1

代わりに次の行を試してください。

world.tile[3][3]->obj=newobj();//newobj() returns def_obj type

world.tile[3][3]->obj.face;

説明:
world.tile[3][3]def_tileです。そのobjフィールドはdef_objではなくdef_obj*です。したがって、def_objそれが指す を取得するには、 を使用する必要があります->obj
内部def_objでは、 face は単なる char であるため、 でアクセスし.faceます。

于 2011-08-23T10:01:02.140 に答える