gpt4 book ai didi

c - 如何在c中实现灵活的数组?

转载 作者:行者123 更新时间:2023-12-02 02:29:48 26 4
gpt4 key购买 nike

..
char arKey[1]; } Bucket;

上面说的是flexible array,怎么办?

最佳答案

通常,结构的最后一个成员的大小为 01(尽管 0 违反标准的 pre-C99,它在某些编译器中是允许的,因为它作为标记具有很大的值(value))。由于通常不会创建大小为 01 的数组,这向其他编码人员表明该字段用作可变大小数组的开始,从最终成员进入任何可用内存。

您还可以找到定义灵活数组的确切长度的结构成员,就像您经常找到包含结构总大小(以字节为单位)的成员一样。

链接

例子

typedef struct {
size_t len;
char arr[];
} MyString;

size_t mystring_len(MyString const *ms) { return ms->len; }

MyString *mystring_new(char const *init)
{
size_t len = strlen(init);
MyString *rv = malloc(sizeof(MyString) + len + 1);
rv->len = len;
strncpy(rv->arr, init, len);
return rv;
}

关于c - 如何在c中实现灵活的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4192163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com