首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C中访问指向列表的指针结构数组?

如何在C中访问指向列表的指针结构数组?
EN

Stack Overflow用户
提问于 2020-04-05 22:26:58
回答 2查看 31关注 0票数 1
代码语言:javascript
复制
typedef struct A {
   struct B *b;                           
} A;

typedef struct B {
int x;                                                  
struct B *next;                                  
} B;


A Table[10];

所以我有这两个结构体,它应该是一个结构体A的数组,包含指向其他结构体B的指针(它们将创建一个列表)。例如,我想访问table5的指针。我的代码给了我一个错误:“赋值时类型不兼容。我无法对结构的格式进行任何更改。以下是我的代码:

代码语言:javascript
复制
struct B* d_root;
d_root=Table->b[5];
EN

回答 2

Stack Overflow用户

发布于 2020-04-05 22:44:41

您应该使用d_root = Table[5].b;而不是此d_root=Table->b[5];

您有一个表的数组,要访问table[5],您应该使用Table[5].member而不是Table.member[5]

还要注意,->不是一个正确的运算符,请查看->的用法

代码语言:javascript
复制
struct *struct_name;

(*struct).struct_member;

由于上面的程序是很小的硬编码,我们可以使用:

代码语言:javascript
复制
struct *struct_name;

struct->struct_member;

但是在Table[5]->b中使用运算符->是错误的。(注意:Table->b是正确的,但它将指向数组的第一个)。

在代码中,此Table->b[5]表示数组b的第五个元素,位于数组Table的第一个元素中。

票数 0
EN

Stack Overflow用户

发布于 2020-04-05 23:12:09

标识符表被声明为具有数组类型

代码语言:javascript
复制
A Table[10];

所以要访问一个元素,你必须指定它的索引,才能使用指针算法。

代码语言:javascript
复制
d_root = Table[5].b;

代码语言:javascript
复制
d_root = ( Table + 5 )->b;

代码语言:javascript
复制
d_root = ( *( Table + 5 ) ).b;

反过来,如果指针b指向动态分配的数组,则选择您可以写入的所需元素

代码语言:javascript
复制
d_root = Table[5].b[i];

代码语言:javascript
复制
d_root = ( Table + 5 )->b[i];

代码语言:javascript
复制
d_root = ( *( Table + 5 ) ).b[i];

其中,i是指针b所指向的动态分配数组中的索引。

要访问指针b所指向的对象的数据成员,可以这样写

代码语言:javascript
复制
int x = Table[5].b[i].x;

代码语言:javascript
复制
int x = ( Table + 5 )->b->x;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61044151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档