繁体   English   中英

指向另一个结构内部的结构中的数组

[英]Pointing to an array inside a struct that is inside another struct

我如何访问另一个结构内部的数组/其他类型的数据。 到目前为止,我已经尝试过此方法,并且由于未声明c而将其推出。 我知道我可以将c声明为prod_t *c但是它prod_t *c了Im试图做的事情的目的,因为它根本不存在于roota_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);

另外,请记住,

  1. sizeof(char)C产生1 ,因此您可以删除该部分。
  2. 一旦使用完分配的内存,就需要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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM