我有一个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
答案 0 :(得分:0)
你的struct只有指针而不是实际的数组。您正在使这些指针指向本地数组,并且当函数返回时,那些本地数组不再存在,因此您的指针指向无效的指针。尝试通过这些指针访问数据是未定义的行为。
另一种方法是使用malloc为您的数据动态分配内存,并让您的struct指针指向动态分配的内存。