【发布时间】:2019-03-19 16:29:24
【问题描述】:
鉴于我有这样的结构 something:
struct arr {
int len;
void *item[]; // still playing with this
};
typedef struct arr my_array;
我想知道你是如何初始化它的。
my_array foo = { 0, 1000 }; // 1000 spaces reserved.
// or perhaps...
my_array foo = { 0, [1000] };
因为当你有一个常规数组时,你可以像这样指定大小:
int anarray[1000];
所以我想你可以这样做来初始化上面数组结构中的指针值。
也许
foo->item[1000];
我不知道。想知道这样的事情是否可能。
【问题讨论】:
-
不在问题上,但可能与标题相关:通常使用
{size_t len; type_x item[1];},然后创建/扩展数组(GNU GCC 允许您使用item[0],这可以简化一些计算。跨度> -
alloc/realloc 会给它一个大小
-
@GiacomoCatenazzi “通常”?不,不是这些天。这是您在 C89 中必须这样做的方式,但 C99 引入了 Lance 正在使用的功能,称为 flexible array members。
-
@Gilles,是的,灵活数组是新方法。但我的观点是不要使用第二次重定向。