我有一组结构想要存储在匿名成员结构中。每个小结构如下所示:
static struct {
uint16_t buf[256];
} bufData[8];
我知道事实上它只有 8 个元素。我想将其包含在另一个结构中,如下所示:
static struct {
int size;
// I am not sure how to proceed
//char * bufData;
//struct * bufData;
} Table[MAX_FILES];
当前正在输入数据:
for (int i = 0; i < 8; i++) {
loadData(i,bufData[i].buf);
printf("%s\n", bufData[i].buf); // This works
}
我想将其存储在 Table 的第 j 个元素中,例如 Table[j].bufData。目前我已经尝试过
memset(bufData, 0, sizeof(bufData));
Table[j].size = 256;
Table[j].bufData = &bufData;
然后解压,还是不行。
char * test = Table[j].bufData;
for (int i = 0; i < 8; i++) {
printf("%s\n", test[i].buf);
}
我想我已经严重损坏了这个,我需要一些帮助来解决它!
最佳答案
由于 bufData
是一个结构体,因此您应该将其存储为 bufData
指针(而不是 char
指针),或者简单地存储为数组bufData
:
struct BufData /* this declares a type, not a variable */
{
uint16_t buf[256];
};
选项 1:
static struct
{
int size;
struct BufData* myBufData;
} Table[MAX_FILES];
选项 2:
static struct
{
int size;
struct BufData myBufData[8];
} Table[MAX_FILES];
编辑: 声明结构时,不要混淆声明类型:
struct aStruct
{
...
};
声明具有未命名结构类型的变量:
struct
{
...
} aVariable;
同时声明类型和该类型的变量:
struct aStruct
{
...
} aVariable;
关于c - 如何在匿名成员中存储结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9462961/