数组大小不正确

#include  void Heapify(int num[], int start, int end) { int root = start; while(root*2+1<=end) { // at least one child exists int swap = root; int lchild = root*2+1; int rchild = root*2+2; if(num[swap]<num[lchild]){ swap = lchild; } if(rchild<=end && num[swap]=0){ Heapify(num,start, end); if(start==0) break; start= start-1; } } void heapsort(int num[]) { int length=sizeof(num)/sizeof(num[0]); printf("length = %d ", length); // length = 1 (Wrong) buildHeap(num); int i; //for (i = 0; i 0){ // swap first elem with last int temp = num[0]; num[0] = num[end]; num[end] = temp; Heapify(num,0,end-1); end--; } } int main() { int num[]={1,7,-32,4,101,-99,16,3}; heapsort(num); return 0; } 

http://codepad.org/zcfNOtye

当我在main中打印它时,长度显示正确但在函数内(堆排序),它显示错误。 我在传递数组时找不到任何错误。 我错过了什么?

当作为参数传递时,数组衰减为指针,您需要将数组的长度作为单独的参数传递。

即:你找不到像这样的数组的长度。

 void buildHeap(int num[]) { int length=sizeof(num)/sizeof(num[0]); } 

sizeof(num)将返回sizeof(int*)