Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中访问指向列表的指针结构数组?_C_Arrays_List_Struct - Fatal编程技术网

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

如何在C中访问指向列表的指针结构数组?,c,arrays,list,struct,C,Arrays,List,Struct,所以我有这两个结构,它应该是一个结构A数组,其中包含指向其他结构B的指针(它们将创建一个列表)。我想访问例如表[5]的指针。我的代码给我一个错误“分配时类型不兼容。我无法对结构的格式进行任何更改。以下是我的代码: typedef struct A { struct B *b; } A; typedef struct B { int x;

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

typedef struct A {
   struct B *b;                           
} A;

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


A Table[10];

您应该使用
d_root=Table[5].b;
代替此
d_root=Table->b[5];

您有一个表数组,要访问
表[5]
您应该使用
表[5]。成员
而不是
表。成员[5]

另请注意
->
不是正确的运算符,请查看
->
的用法:

struct B* d_root;
d_root=Table->b[5];
由于上述程序几乎没有硬编码,我们可以使用:

struct *struct_name;

(*struct).struct_member;
但是在这里使用操作符
->
是错误的。 (注意:表->b是正确的,但它将指向数组的第一个)


在你的代码中,这个
表->b[5]
表示数组的第五个元素
b
在数组的第一个元素
表中
你应该使用
d_root=Table[5].b;
代替这个
d_root=Table->b[5];

您有一个表数组,要访问
表[5]
您应该使用
表[5]。成员
而不是
表。成员[5]

另请注意
->
不是正确的运算符,请查看
->
的用法:

struct B* d_root;
d_root=Table->b[5];
由于上述程序几乎没有硬编码,我们可以使用:

struct *struct_name;

(*struct).struct_member;
但是在这里使用操作符
->
是错误的。 (注意:表->b是正确的,但它将指向数组的第一个)


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

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

struct *struct_name;

struct->struct_member;
因此,要访问一个元素,必须指定其索引以使用指针算法

A Table[10];

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

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

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

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

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


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

struct *struct_name;

struct->struct_member;
因此,要访问一个元素,必须指定其索引以使用指针算法

A Table[10];

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

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

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

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

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


这不应该只是
表[5].b
?那
表->b[5]
意味着
结构b*b;
字段不是数组时是数组。`这不应该只是
表[5].b
?那
表->b[5]
意味着
结构b*b;
字段不是数组时是数组`