指向一个结构内的数组,该结构位于另一个结构内
Pointing to an array inside a struct that is inside another struct
如何访问位于另一个结构内的结构内的数组/其他类型的数据。到目前为止,这是我尝试过的方法,它的出现是因为 c
没有声明。我知道我可以将 c
声明为 prod_t *c
但它违背了我试图做的事情的目的,因为它不存在于 root
(a_t
struc).
typedef struct {
char *name;
} prod_t;
typedef struct {
prod_t *c;
} a_t;
int
main(int agrc, char **argv){
a_t *root = malloc(sizeof(a_t));
root->c=malloc(sizeof(prod_t));
c->name = malloc( 5 * sizeof(char));
strcpy(c->name, "abc");
printf("%s",root.c->name);
return 0;
}
在您的代码中,c->name
不是有效的变量名。 c
是结构体变量root
的成员变量。没有名为 c
.
的 独立 变量
你可以使用 like
root->c->name = malloc( 5 );
和
strcpy(root->c->name, "abc");
和
printf("%s\n", root->c->name);
此外,请记住,
sizeof(char)
保证在 C
中产生 1
,所以你可以放弃那部分。
- 使用完分配的内存后,您需要
free()
它们。
你有三个指针,一个是 "enclosed" 另一个。所以你必须写
root->c->name = malloc( 5 * sizeof(char));
strcpy( root->c->name, "abc");
printf("%s",root->c->name);
并且您必须按以下顺序释放它们
free( root->c->name );
free( root->c );
free( root );
考虑到通常在分配"inner"指针指向的内存之前,您必须检查"outer"指针是否成功"allocated"。
如何访问位于另一个结构内的结构内的数组/其他类型的数据。到目前为止,这是我尝试过的方法,它的出现是因为 c
没有声明。我知道我可以将 c
声明为 prod_t *c
但它违背了我试图做的事情的目的,因为它不存在于 root
(a_t
struc).
typedef struct {
char *name;
} prod_t;
typedef struct {
prod_t *c;
} a_t;
int
main(int agrc, char **argv){
a_t *root = malloc(sizeof(a_t));
root->c=malloc(sizeof(prod_t));
c->name = malloc( 5 * sizeof(char));
strcpy(c->name, "abc");
printf("%s",root.c->name);
return 0;
}
在您的代码中,c->name
不是有效的变量名。 c
是结构体变量root
的成员变量。没有名为 c
.
你可以使用 like
root->c->name = malloc( 5 );
和
strcpy(root->c->name, "abc");
和
printf("%s\n", root->c->name);
此外,请记住,
sizeof(char)
保证在C
中产生1
,所以你可以放弃那部分。- 使用完分配的内存后,您需要
free()
它们。
你有三个指针,一个是 "enclosed" 另一个。所以你必须写
root->c->name = malloc( 5 * sizeof(char));
strcpy( root->c->name, "abc");
printf("%s",root->c->name);
并且您必须按以下顺序释放它们
free( root->c->name );
free( root->c );
free( root );
考虑到通常在分配"inner"指针指向的内存之前,您必须检查"outer"指针是否成功"allocated"。