如何访问位于另一个结构内的结构内的数组/其他类型的数据。到目前为止,这是我尝试过的方法,它以 c
未声明的形式出现。我知道我可以将 c
声明为 prod_t *c
但它违背了我试图做的事情的目的,因为它不存在于 root
中(a_t
结构)。
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
的独立变量。
你可以像这样使用
root->c->name = malloc( 5 );
和
strcpy(root->c->name, "abc");
和
printf("%s\n", root->c->name);
另外,请记住,
sizeof(char)
保证在C
中生成1
,因此您可以删除该部分。- 一旦您使用完分配的内存,您需要
free()
它们。
关于c - 指向一个结构内的数组,该结构位于另一个结构内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30321874/