Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将void**转换为int-C的2D数组_C_Casting_Multidimensional Array_Void Pointers - Fatal编程技术网

将void**转换为int-C的2D数组

将void**转换为int-C的2D数组,c,casting,multidimensional-array,void-pointers,C,Casting,Multidimensional Array,Void Pointers,我试图将void**指针转换为C中的int**2D数组 以下是我正在尝试使用的代码(删除了所有无关的位): 当我编译它时,它工作得很好,但给了我一个警告,变量“matrix”已设置但未使用。我真的不想使用中间矩阵变量,因为函数只是初始化数组,而不是在数组中放入任何东西;但是,如果我尝试将graph_数据直接转换为int**,当我将其转换为graph->graph时,如下所示: graph->graph = (int(*)[graph->order])graph_data; 它给我一

我试图将void**指针转换为C中的int**2D数组

以下是我正在尝试使用的代码(删除了所有无关的位):

当我编译它时,它工作得很好,但给了我一个警告,变量“matrix”已设置但未使用。我真的不想使用中间矩阵变量,因为函数只是初始化数组,而不是在数组中放入任何东西;但是,如果我尝试将graph_数据直接转换为int**,当我将其转换为graph->graph时,如下所示:

graph->graph = (int(*)[graph->order])graph_data;
它给我一个来自不兼容指针类型警告的赋值

我是不是投得不好?是否有人对我如何在没有临时“矩阵”变量的情况下使其工作有任何建议?或者,如果没有,我可以用这个变量做什么,这样它就不会给我警告说它已设置但未使用


感谢

编译器是正确的,数组数组(或指向数组的指针)与指向指针的指针不同。想想它们在记忆中是如何排列的:

以数组形式表示的大小为MxN的矩阵:

+--------------+--------------+-----+----------------+--------------+-----+------------------+ | matrix[0][0] | matrix[0][1] | ... | matrix[0][N-1] | matrix[1][0] | ... | matrix[M-1][N-1] | +--------------+--------------+-----+----------------+--------------+-----+------------------+ +--------------+--------------+-----+----------------+--------------+-----+------------------+ |矩阵[0][0]|矩阵[0][1]|……|矩阵[0][N-1]|矩阵[1][0]|……|矩阵[M-1][N-1]| +--------------+--------------+-----+----------------+--------------+-----+------------------+ A和相同的“矩阵”,以指针到指针的形式:

+-----------+-----------+-----------+-----+ | matrix[0] | matrix[1] | matrix[2] | ... | +-----------+-----------+-----------+-----+ | | | | | V | | +--------------+--------------+-----+ | | | matrix[2][0] | matrix[2][1] | ... | | | +--------------+--------------+-----+ | | | V | +--------------+--------------+-----+ | | matrix[1][0] | matrix[1][1] | ... | | +--------------+--------------+-----+ | V +--------------+--------------+-----+ | matrix[0][0] | matrix[0][1] | ... | +--------------+--------------+-----+ +-----------+-----------+-----------+-----+ |矩阵[0]|矩阵[1]|矩阵[2]|| +-----------+-----------+-----------+-----+ | | | ||V | | +--------------+--------------+-----+ || |矩阵[2][0]|矩阵[2][1]|| | | +--------------+--------------+-----+ | | |五 | +--------------+--------------+-----+ ||矩阵[1][0]|矩阵[1][1]|| | +--------------+--------------+-----+ | v +--------------+--------------+-----+ |矩阵[0][0]|矩阵[0][1]|| +--------------+--------------+-----+
无论您是否分配了正确的大小,这两个变量都是不兼容的,这正是编译器告诉您的。

另请参见。优秀的ASCII艺术。这让你的答案很有说服力(也很优雅),有没有ascii工具可以做到这一点?@artm不知道,我只是把这些东西直接写在网站的文本输入框中。:)手工绘制的效果令人印象深刻,它看起来非常精确(所有
指针都正确对齐:)
+-----------+-----------+-----------+-----+
| matrix[0] | matrix[1] | matrix[2] | ... |
+-----------+-----------+-----------+-----+
  |           |           |
  |           |           V
  |           |           +--------------+--------------+-----+
  |           |           | matrix[2][0] | matrix[2][1] | ... |
  |           |           +--------------+--------------+-----+
  |           |
  |           V
  |           +--------------+--------------+-----+
  |           | matrix[1][0] | matrix[1][1] | ... |
  |           +--------------+--------------+-----+
  |
  V
  +--------------+--------------+-----+
  | matrix[0][0] | matrix[0][1] | ... |
  +--------------+--------------+-----+