tit*_*mlb 2 c struct pointers structure
我想知道何时应该使用指向结构中的结构的指针.
我清楚地理解为什么我们使用指向链接列表中的结构的指针,但我在另一种情况下面临一个问题.
例如:
#include <stdlib.h>
#include <string.h>
#define NICK_MAX_LENGTH 100
struct deck {
size_t nb_cards;
int *cards;
}
// Should I do :
struct player {
int id;
char nick[NICK_MAX_LENGTH];
struct deck *pl_deck;
}
struct player* my_function1() {
struct player *pl = malloc(sizeof(struct player));
pl->id = 1;
strcpy(pl->nick, "Paul")
pl->pl_deck = malloc(sizeof(struct deck));
pl->pl_deck->nb_cards = 3;
for (int i = 0; i < 3; ++i)
pl->pl_deck->cards[i] = i + 1;
return pl;
}
// .. or should I do :
struct player {
int id;
char nick[NICK_MAX_LENGTH];
struct deck pl_deck;
}
struct player* my_function2() {
struct player *pl = malloc(sizeof(struct player));
pl->id = 2;
strcpy(pl->nick, "Matt")
struct deck pl_deck;
pl_deck.nb_cards = 3
for (int i = 0; i < 3; ++i)
pl_deck.cards[i] = i + 1;
pl->pl_deck = pl_deck;
return pl;
}
Run Code Online (Sandbox Code Playgroud)
如果需要独立管理两个结构的生命周期,请使用指针.如果你可以让多个玩家使用同一个牌组,你需要使用一个指针,这样他们就可以引用它.或者,如果你需要能够在保持游戏的同时释放玩家,反之亦然,你应该使用指针.
另一方面,如果玩家和套牌之间始终存在一对一的对应关系,则应该嵌套结构.
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |