【发布时间】:2014-09-12 06:45:26
【问题描述】:
我已经远离 C 语言,当我重新开始研究它时,我发现自己遇到了障碍。我有以下结构:
typedef struct{
char id;
struct S *children[SIZE];
}S;
在我的代码中,我最初声明了一个结构数组...
struct S arr[SIZE];
但是当我尝试将我的第一个孩子分配给我的第一个 arr 成员时......
arr[0].children[0] = (S*)malloc(sizeof(S));
我收到此警告:警告:内置函数“malloc”的不兼容隐式声明警告:来自不兼容指针类型的赋值[默认启用]
除此之外,我遇到了一个对我来说听起来不太合乎逻辑的错误。我有以下功能:
int foo(S *children[SIZE]);
但是当我拨打这条线时......
foo(arr[0].children);
我收到了这个注释:注释:预期为“struct S **”,但参数的类型为“struct S **” 对我来说这听起来很愚蠢,它期待着它得到的论点并且对此感到不安。
任何帮助解释我应该做些什么来正确分配这个内存并实现相同的想法将非常感激。
【问题讨论】:
-
结构体中没有结构体数组。你有一个指针数组。这有很大的不同。
-
在定义类型别名
S之前,在哪里声明结构S?我真的很惊讶你没有得到编译器 errors 因为在结构内部没有名为S的结构。