请教一下关于c语言 实参与形参的问题!?

void heap_sort(element *a,int n) { int i; HeapType h; init(&h); for(i=0;i<n;i++){ insert_max_heap(&h,a[i]); } for (i=(n-1);i>=0;i--){ a[i]=delete_max_heap(&h); } } int main(void) { int i; int n=10; int list[]={0}; for(i=0;i<n;i++) list[i]=rand()%n; heap_sort(list,n); for(i=0;i<n;i++) printf("%d\n",list[i]); system("pause"); return 0; }
d:\c语言编译器\随便啦\随便啦\排序.cpp(68): error C2664: “heap_sort”: 不能将参数 1 从“int [1]”转换为“element *” 
 总是提示这个 !
  帮忙解释下 ! 

万千封印
浏览 274回答 2
2回答

慕后森

虽然我不知道你的element 具体指代的什么,但是应该也是一种类型。你的heapsort函数的第一个参数是需要传入 element类型的数组指针。 你的list是int型的数组。所以产生了你所列出的错误。你应该定义一个element list[]; 若是element实质上 就是 用typedef 或是 #define 定义的指代int的类型的话。 那么 element list={1};就能正常运行了!!

阿晨1998

你得问题可以这样解决:int[1]肯定是个数组,只有一个变量,element是个结构体,也只有一个变量,那么他们得地址偏移量肯定是相同得。int&nbsp;a[1];void&nbsp;*p;p=(void&nbsp;*)a;heap_sort((element*)p,1);以下是代码和运行结果:#include <stdio.h>typedef struct{int key;}element;void heap_sort(element *a,int n){printf("%x",a->key);}int main(void){&nbsp;int a[1]={0xabcd};void *p;p=(void *)a;heap_sort((element*)a,1);return 0;}
打开App,查看更多内容
随时随地看视频慕课网APP