指向另一个struct内部的struct内的数组

Kyu*_*yuu 1 c arrays struct

如何访问位于另一个结构内部的结构内部的数组/其他类型的数据.这是我到目前为止所尝试的,它的出现c并没有宣布.我知道我可以声明c,prod_t *c但它失败了我试图做的事情的目的,因为它不存在于root(a_tstruc)内部.

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;
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 5

在您的代码中,c->name不是有效的变量名称.c是结构变量的成员变量root.没有名为的独立变量c.

你可以使用喜欢

root->c->name = malloc( 5 );
Run Code Online (Sandbox Code Playgroud)

strcpy(root->c->name, "abc");
Run Code Online (Sandbox Code Playgroud)

printf("%s\n", root->c->name);
Run Code Online (Sandbox Code Playgroud)

另外,请记住,

  1. sizeof(char)是存在保证生产1C,这样就可以把那部分.
  2. 一旦你完成使用分配的内存,你需要free()它们.