You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从指向结构体指针的指针数组中获取结构体成员值?

问题分析与解决方案

先明确你的代码里的核心类型匹配问题:

  • 你声明的数组 struct Game **arr[MAX_NUM],每个元素是指向结构体指针的二级指针。
  • 赋值时 arr[counter] = &new_game,其中 new_game 是 struct game * 类型,所以 &new_game 是二级指针,和数组元素类型匹配,但访问成员时必须注意指针层级。

你尝试用 arr[counter]->publisher 访问成员报错,是因为 arr[counter] 是二级指针(struct game **),而 -> 运算符仅适用于指向结构体/联合体的一级指针。必须先解引用二级指针得到一级指针,才能访问结构体成员。

正确的访问写法

两种等价的合法写法:

  1. 用解引用运算符 * 先获取一级指针,再用 -> 访问成员:
printf("%s", (*arr[counter])->publisher);
  1. 用数组下标语法替代解引用(*p 等价于 p[0]):
printf("%s", arr[counter][0]->publisher);

额外的潜在问题

你的结构体定义写法有误:

struct game
{
    // ...成员定义...
} Game;

这行代码是声明了一个名为Game的struct game类型变量,而非将Game设为struct game的类型别名。如果想让 struct Game 成为合法类型,应该用typedef修正:

typedef struct game
{
    // ...成员定义...
} Game;

否则你后续的 struct Game **arr[MAX_NUM] 其实是非法的,因为不存在 struct Game 这个类型,只有 struct game 和变量Game。

内容的提问来源于stack exchange,提问作者Khanh Bui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:26:28