typedef struct {
void *end;
void *start;
int size;
int arrs [];
} st;
void *doStuff(void *starter, void *ender) {
st *s = (st *) malloc(sizeof(st));
s->end = ender;
s->start = starter;
int sayz = 1;
s->size = (int) (ender - starter);
int a [s->size];
memset(a, 0, sizeof a);
s->arrs = a; // This line gives error
return s;
}
行“st->arrs = a;”给我“灵活数组成员的无效使用”错误。有谁知道如何在结构中保存数组?语言是C
最佳答案
这就是您想要的,假设 starter
和 ender
指向 char
对象。我还清理了您的缩进和格式。
typedef struct {
void *end;
void *start;
ptrdiff_t size; // Note that a diff of pointers should be a ptrdiff_t
int arrs[];
} st;
st *doStuff(void *starter, void *ender) {
ptrdiff_t size = (char*)ender - (char*)starter; // Calculate size first so it's available to use in malloc
st *s = malloc(size + sizeof st);
s->end = ender;
s->start = starter;
s->size = size;
memset(s->arrs, 0, size * sizeof s->arrs[0]); // since array is allocated, no need to create a redundant array
return s;
}
关于arrays - 灵活数组成员使用无效错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71273093/