为extractMin的参数行获取以下错误:
randmst.c:129:错误:预期';',','或')'在'&'标记之前
如果我没有粘贴足够的错误代码,请告诉我。
//the heap functions
//based on p. 163 of clrs
VertexPointer
extractMin(VertexPointer *heap, int &heap_size){
VertexPointer max = heap[0];
(*heap[0]).key = 100;
heap_size = heap_size - 1;
minHeapify(heap, heap_size, 1);
return max;
}
答案 0 :(得分:2)
您无法在extractMin(VertexPointer *heap, int &heap_size)
中执行此操作C
- 将其更改为extractMin(VertexPointer *heap, int *heap_size)
C中没有Pass-by-reference。所以你应该有这样的东西:
extractMin(VertexPointer *heap, int *heap_size){
VertexPointer max = heap[0];
(*heap[0]).key = 100;
*heap_size = *heap_size - 1;
minHeapify(heap, *heap_size, 1);
return max;
}
&
用于获取变量的地址,因此在调用函数时,您应该这样调用它:
extractMin(someAddress_to_heap, someAddress_to_heap_size)
答案 1 :(得分:0)
通过引用传递在C中不起作用,通过引用传递和传递地址存在差异。 C ++支持传递refrence但C不支持。 将您的代码更改为
VertexPointer
extractMin(VertexPointer *heap, int *heap_size)