打印在函数中作为参数传递的结构

时间:2013-05-12 17:50:11

标签: c struct

我有一个C程序,它将一个数组作为输入,将保存为3个不同的数组。例如:

0 2 0  
1 0 0  
0 0 3  

将保存为Elemenets = [2,1,3],并在我创建的结构中保存相应值Rows = [1,2,3] Columns = [2,1,3]的坐标。

输入如下:

首先,我给出数组的维数,然后给出数组的非零值的数量,然后是它们的坐标值。

在我输入后,我尝试使用function print2d(struct arrayCollection the array)打印数组,但结构数组内部似乎有错误的数字(内存地址?)。当我将它作为参数传递给函数但是我找不到问题时,我认为我对结构做错了。我也尝试通过引用传递结构作为指针,但我有相同的结果。

这是我的program

我的ide是xcode,编译器是apple llvm编译器4.1

1 个答案:

答案 0 :(得分:0)

你的struct只有指针而不是实际的数组。您正在使这些指针指向本地数组,并且当函数返回时,那些本地数组不再存在,因此您的指针指向无效的指针。尝试通过这些指针访问数据是未定义的行为。

另一种方法是使用malloc为您的数据动态分配内存,并让您的struct指针指向动态分配的内存。