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