gpt4 book ai didi

c - 什么时候应该在结构中使用指向结构的指针?

转载 作者:行者123 更新时间:2023-12-02 08:14:02 25 4
gpt4 key购买 nike

我想知道什么时候应该在结构中使用指向结构的指针。

例如,我清楚地理解为什么我们在链表中使用指向结构的指针,但我在另一种情况下遇到了问题。

例如:

#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;
}

最佳答案

如果需要独立管理两个结构的生命周期,则使用指针。如果您可以让多个玩家使用同一副牌,则需要使用一个指针,以便他们都可以引用它。或者,如果您需要能够释放玩家,同时保留他们的牌组,反之亦然,您应该使用指针。

另一方面,如果玩家和牌组之间始终存在一对一的对应关系,则您应该嵌套结构。

关于c - 什么时候应该在结构中使用指向结构的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43597780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com