C 申请会员';名称';以非结构或结合的方式
我有两个结构C 申请会员';名称';以非结构或结合的方式,c,struct,structure,C,Struct,Structure,我有两个结构 typedef struct pokemon_move_t { char* name; PokemonType type; int power_points, max_power_points; int strength; } *PokemonMove; typedef struct pokemon_t { char* name; PokemonType type; int experience; int health_points; PokemonMove* moves; i
typedef struct pokemon_move_t {
char* name;
PokemonType type;
int power_points, max_power_points;
int strength;
} *PokemonMove;
typedef struct pokemon_t {
char* name;
PokemonType type;
int experience;
int health_points;
PokemonMove* moves;
int number_of_moves, max_number_of_moves;
} *Pokemon;
我有一个接收pokemon struct的函数,我正在尝试访问函数中的name字段,它在标题中显示了错误消息,我尝试了之前建议的所有操作,但都没有成功,函数是(不完整的):
元素
移动
为:
PokemonMove * moves;
即:
struct pokemon_move_t ** moves;
而不是:
struct pokemon_move_t * moves;
。。。它是指向结构的指针,而不是指向结构本身的指针
我想你不想要这个
您必须删除typedef
中的*
或结构中的*
如果移动
确实是指向指针的指针,则必须通过以下方式(或类似方式)访问它:
。。。这等于:
char* name= pokemon->moves[0]->name;
。。。或者,如果移动
指向数组:
char* name= pokemon->moves[index]->name;
元素
移动
为:
PokemonMove * moves;
即:
struct pokemon_move_t ** moves;
而不是:
struct pokemon_move_t * moves;
。。。它是指向结构的指针,而不是指向结构本身的指针
我想你不想要这个
您必须删除typedef
中的*
或结构中的*
如果移动
确实是指向指针的指针,则必须通过以下方式(或类似方式)访问它:
。。。这等于:
char* name= pokemon->moves[0]->name;
。。。或者,如果移动
指向数组:
char* name= pokemon->moves[index]->name;
我想你指的是数据成员的以下声明
typedef struct pokemon_t {
char* name;
PokemonType type;
int experience;
int health_points;
PokemonMove moves;
^^^^^^^^^^^^^^^^^
int number_of_moves, max_number_of_moves;
} *Pokemon;
在这种情况下,这个声明
char* name= pokemon->moves->name;
将是有效的
类型pokemove
已声明为指针类型
typedef struct pokemon_move_t {
char* name;
PokemonType type;
int power_points, max_power_points;
int strength;
} *PokemonMove;
^^^^^^^^^^^^
我想你指的是数据成员的以下声明
typedef struct pokemon_t {
char* name;
PokemonType type;
int experience;
int health_points;
PokemonMove moves;
^^^^^^^^^^^^^^^^^
int number_of_moves, max_number_of_moves;
} *Pokemon;
在这种情况下,这个声明
char* name= pokemon->moves->name;
将是有效的
类型pokemove
已声明为指针类型
typedef struct pokemon_move_t {
char* name;
PokemonType type;
int power_points, max_power_points;
int strength;
} *PokemonMove;
^^^^^^^^^^^^
使用
pokemove移动代码>而不是pokemove*移动代码>不要将指针性质隐藏在typedef后面。它会引起很多混乱,比如你自己刚刚经历过的。char*name=(*pokemon->moves)->name代码>使用口袋妖怪移动代码>而不是pokemove*移动代码>不要将指针性质隐藏在typedef后面。它会引起很多混乱,比如你自己刚刚经历过的。char*name=(*pokemon->moves)->name代码>问题是我不能编辑结构,这是课程的工作人员给我们的,我只能编辑功能,你知道我如何在不改变结构的情况下进行编辑吗?@SherazFaraj:你可以在问题中提到这个限制。问题是我不能编辑结构,它是由课程的工作人员提供给我们的,我只能编辑函数,你知道我如何在不改变结构的情况下进行编辑吗?@SherazFaraj:你可以在你的问题中提到这个限制。