【问题标题】:Size of pointer array inside Struct结构内指针数组的大小
【发布时间】:2013-04-21 19:53:40
【问题描述】:

我有这两个结构:

typedef struct {
    char name[20];
    int num;
    int score;
} player;

typedef struct {
    char name[20];
    player *players;
} team;

我需要知道每个*players 在我的team 结构中存储的元素数量。 谢谢!

【问题讨论】:

  • 然后为其创建一个结构成员(可能是size_t 类型)。
  • 团队结构只包含一个指向球员的指针。这可能是一系列玩家中的第一个玩家,也可能只是一个玩家。多少将取决于您为该指针分配一些内存时分配的数量。
  • @Will,我分配了 22,但程序可能使用也可能不使用 22,所以,我将重新分配内存到使用的数量,然后,一个函数需要打印那里有多少玩家是每个团队,所以,我需要一种方法来知道数组本身中有多少项目

标签: c arrays pointers struct sizeof


【解决方案1】:

你不能。 players 是指向 N 个 player 实例的指针。它只携带一个地址的信息。它不是一个数组;它是一个指针。

您必须单独存储结构中的元素数量。

typedef struct {
    char name[20];
    player *players;
    size_t num_players;
} team;

顺便说一句,你最好希望 Jarrod Saltalamacchia 永远不会加入这个团队。

【讨论】:

  • 附注! (如果我今天还有票,我会为此 +1。)
  • Jarrod Saltalamacchia??那是谁,为什么他很烂?
  • @LefterisE: char name[20];
  • @H2CO3:该死的,我在编辑! :D 我实际上试图找到一个 20 的名字,但 21 是我能做的最好的。
  • 根据规格,名称最多为 20 个字符,不是我的决定。当一切正常时,我会将其更改为 char *name 并使其正常工作,直到那时,我只想让它工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2014-07-08
  • 2017-06-03
  • 2017-07-02
相关资源
最近更新 更多