【发布时间】:2015-02-17 00:31:03
【问题描述】:
如何传递结构数组?
到目前为止,我有这个是全球性的:
typedef struct _line
{
float val1;
int val2;
} line;
然后我从文件中读取数据到这个结构中
struct _line* read_file()
{
typedef struct _line *Lines
Lines *array = malloc(num_lines * sizeof(Lines));
//read values into structures here
然后我用值填充数组中的结构。如果我这样做printf("%d", (*array[1]).val1);,我会在这个特定的方法中得到正确的值
然后我像这样返回数组
return *array
但是当我这样做时,只有第 0 个结构在我返回的方法中正确读取。读取第一个元素只会打印随机值。我做错了什么?
【问题讨论】:
-
按照您的(很少)代码和描述,您甚至应该无法编译代码。请创建一个Minimal, Complete, and Verifiable Example 并向我们展示。
-
此外,当您使用
malloc分配内存时,内容是 indeterminate 直到您初始化它,并且根据您的模糊描述,您不会初始化您分配的所有内存.还有一个问题是你分配sizeof(Lines)的倍数,但是sizeof(Lines)给你指针的大小而不是结构,你想要sizeof(*array)代替(这里的教训:不要' t 使用指针的类型别名)。 -
停止使用指针类型定义。您的 malloc 错误。