[英]Pointing to an array inside a struct that is inside another struct
我如何访问另一个结构内部的数组/其他类型的数据。 到目前为止,我已经尝试过此方法,并且由于未声明c
而将其推出。 我知道我可以将c
声明为prod_t *c
但是它prod_t *c
了Im试图做的事情的目的,因为它根本不存在于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()
它们。 您有三个指针,另一个指针被“封闭”。 所以你必须写
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 );
考虑到一般来说,在分配“内部”指针指向的内存之前,您必须检查“外部”指针是否已成功“分配”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.