0

我有一个 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)但结构的数组似乎内部有错误的数字(内存地址?)。我认为当我将结构作为参数传递给函数时我做错了,但我找不到问题。我还尝试通过引用将结构作为指针传递,但我得到了相同的结果。

这是我的程序

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

4

1 回答 1

0

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

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

于 2013-05-12T17:58:23.800 回答