如何访问C中列表的指针结构数组


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

A Table[10];

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

struct B* d_root;
d_root=Table->b[5];

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

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

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

struct *struct_name;
(*struct).struct_member;

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

struct *struct_name;
struct->struct_member;

但这里使用运算符CCD_ 8 CCD_。(注意:表->b是对的,但它将指向数组的第一个(。

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

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

A Table[10];

因此,要访问一个元素,必须指定其索引以使用指针算术。

d_root = Table[5].b;

d_root = ( Table + 5 )->b;

d_root = ( *( Table + 5 ) ).b;

反过来,如果指针b指向一个动态分配的数组,那么为了选择所需的元素,可以编写

d_root = Table[5].b[i];

d_root = ( Table + 5 )->b[i];

d_root = ( *( Table + 5 ) ).b[i];

其中CCD_ 14是指针CCD_。

要访问指针b指向的对象的数据成员,可以编写例如

int x = Table[5].b[i].x;

int x = ( Table + 5 )->b->x;

最新更新