【发布时间】:2016-11-22 10:53:00
【问题描述】:
我正在尝试在 C 中的结构中设置一个结构数组。数组的大小直到运行时才知道,所以我尝试将数组定义为动态的。我已将我的问题简化为下面显示的代码(每个结构中还有几个成员,但不构成问题)。
//struct definitions
struct intStream {
int test;
};
struct io {
struct inStream **inputStream;
};
// then proceed to main
int numDevices = 4; //(derived from number of devices found at runtime)
struct io *devices;
devices->inputStream = malloc(sizeof(struct inStream) * numDevices)
// Fails on
devices->inputStream[0]->test = 1;
我对 C 风格的编程还是比较陌生,所以我对内存的理解并不完整,但是通过一些搜索,除了我不喜欢的 struct hack 之外,我无法找到解决我的问题的替代解决方案,因为以及希望将来包含更多数组的选项。
【问题讨论】:
-
你有一个统一的变量
devices。你认为它指向什么? -
请不要添加问题的答案,谢谢。 :)
-
@n.m.我已经看到了我的方式的错误;)不太确定我期望回头看!
-
@SouravGhosh 当然,我只是想包含一个“更完整”的答案版本,谢谢。
-
代码中没有结构数组。在您的结构中也没有 指向结构的指针 的数组。如果需要灵活数组,请使用灵活数组成员。