我将尝试在C语言中将一个void**指针转换为int** 2D数组。
这是我正在使用的代码(已删除所有多余部分):
当我编译它时,它可以正常工作,但会给我一个警告,即变量“matrix”被设置但未使用。我不想使用中间矩阵变量,因为该函数只是应该初始化数组,而不是向其中放置任何内容;但是,如果我尝试在将graph_data分配给graph->graph时直接将其转换为int **,则会出现问题:
这是我正在使用的代码(已删除所有多余部分):
\*assume that i have a data structure called graph with some
*element "void** graph" in it and some element "int order" */
void initialise_graph_data(graph_t *graph)
{
void **graph_data = NULL;
int (*matrix)[graph->order];
size_t size = (graph->order * graph->order) * sizeof(int);
graph_data = safe_malloc(size); /*safe malloc works fine*/
matrix = (int(*)[graph->order])graph_data;
graph->graph = graph_data;
}
当我编译它时,它可以正常工作,但会给我一个警告,即变量“matrix”被设置但未使用。我不想使用中间矩阵变量,因为该函数只是应该初始化数组,而不是向其中放置任何内容;但是,如果我尝试在将graph_data分配给graph->graph时直接将其转换为int **,则会出现问题:
graph->graph = (int(*)[graph->order])graph_data;
我收到了一个“从不兼容的指针类型分配”的警告。
我是不是没有正确地进行转换?有没有人有任何建议,可以让我在不使用中间变量“matrix”的情况下使其正常工作?如果不行,那我该怎么处理这个变量,以免出现“已设置但未使用”的警告?
谢谢
void **
到int
的强制类型转换。 - Jonathan Leffler