void ** ** int ** 2D 배열에 대한 포인터를 캐스팅하려고합니다.캐스팅 void ** ~ 2D 배열의 int - C
여기에 내가 작업하려고하는 코드가 있습니다. 제거 모든 외부 비트) :
\*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;
}
내가 그것을 잘 작동하지만 나에게 변수 '매트릭스'가 설정되어 있지만 사용되지 않는다는 경고를 제공하는 컴파일
. 임시 배열 변수를 사용하고 싶지는 않습니다. 왜냐하면이 함수는 배열을 초기화하고, 아무것도 넣지 않기 때문입니다. 내가 너무 좋아> 그래프를 graph- 그것을 assiging하고 때 내가 ** int로 graph_data 직접 캐스팅하려고하면 있지만 :graph->graph = (int(*)[graph->order])graph_data;
그것은 나에게 호환되지 않는 포인터 타입 경고에서 할당을 제공합니다.
그냥 제대로 캐스팅하지 않았습니까? 누구든지 임시 "매트릭스"변수없이 어떻게 작동시킬 수 있는지에 대한 제안 사항이 있습니까? 또는 그렇지 않다면, 내가 그 변수를 사용하여 무엇을 할 수 있도록 설정되었지만 사용되지 않았다는 경고를 나에게주지 않습니까?
감사
[C에서'void **'에서'int'로 변환] (http://stackoverflow.com/questions/18456944/casting-from-void-to-int-c)도 참고하십시오. –