我已经远离 C,当我重新投入其中时,我发现自己遇到了障碍。我有以下结构:
typedef struct{
char id;
struct S *children[SIZE];
}S;
在我的代码中,我最初声明了一个结构数组...
struct S arr[SIZE];
但是当我开始尝试为 arr 的第一个成员分配我的第一个 child 时......
arr[0].children[0] = (S*)malloc(sizeof(S));
我收到此警告:警告:内置函数“malloc”警告的不兼容隐式声明:从不兼容的指针类型赋值[默认启用]
最重要的是,我收到了一个对我来说听起来不太合逻辑的错误。我有以下功能:
int foo(S *children[SIZE]);
但是当我调用这条线时......
foo(arr[0].children);
我得到这个注释:注意:预期为“struct S **”但参数的类型为“struct S **” 对我来说这听起来很愚蠢,它期待着它得到的论点并且对此感到不安。
如果能帮助解释我应该如何正确分配此内存并实现相同的想法,我们将不胜感激。
最佳答案
没有struct S
,只有S
,它是匿名结构的typedef
。
同样定义struct S
:
typedef struct S {
char id;
struct S *children[SIZE];
}S;
或者:
typedef struct S S;
struct S {
char id;
S *children[SIZE];
};
和do avoid casting return of malloc in C :
arr[0].children[0] = malloc(sizeof(S));
关于c - 如何为结构、结构内的结构数组正确分配内存,并将该数组作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25802326/