我想将C代码用于具有指向灵活大小数组的类型指针的成员的 struct 类型. 但是,如果类型声明中未指定数组大小,则无法访问数组元素. 不能使用Malloc(),因为数组应该是全局常量. 此外, struct "实例"应该相互引用,本例中没有涉及到的内容,因为这已经起作用了. 我是否没有为元素访问或成员声明使用正确的语法?
void up(void){
typedef struct _sType{
const char name[6];
const struct _sType* (*sub)[]; // replace (*sub)[] here by (*sub)[3] for correct element access
}sType;
const sType s1 = {
"S1",
NULL,
};
const sType s2 = {
"S2",
NULL,
};
const sType* items[] = {
&s1,
&s2,
NULL
};
const sType s0 = {
"S0",
&items
};
const char* dbg = s0.name; // just use s0 once for not optimizing it away
}
我监控了他的记忆.无论 struct 成员是定义为灵活的还是固定的,Items和s0->sub
的地址和值都没有区别.例如,我通过&items[0]->name
和s0->sub[0]->name
访问元素