c - 指向一个结构内的数组,该结构位于另一个结构内

标签 c arrays struct

如何访问位于另一个结构内的结构内的数组/其他类型的数据。到目前为止,这是我尝试过的方法,它以 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);

另外,请记住,

  1. sizeof(char) 保证在 C 中生成 1,因此您可以删除该部分。
  2. 一旦您使用完分配的内存,您需要free()它们。

关于c - 指向一个结构内的数组,该结构位于另一个结构内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30321874/

相关文章:

c - 如何创建对数字求和的递归函数?

C++ 二维数组 - 数组下标的错误类型无效 ‘int[int]’

go - 在磁盘上存储结构树

c - 链表中的节点是单独的结构还是同一结构的一部分?

c - 对数组类型 C 的表达式进行赋值

c - 文本文件中的无效本地化字符

c - 用宏注释函数

ios - 如何将相机/照片库中的图像保存到要在 UICollectionView 中显示的数组中

c++ - 数组中第 k 个最大的元素

Vim:在 C 中,将结构名称突出显示为 cType