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 *” 总是提示这个 ! 帮忙解释下 !
2 回答
慕后森
TA贡献1802条经验 获得超5个赞
虽然我不知道你的element 具体指代的什么,但是应该也是一种类型。
你的heapsort函数的第一个参数是需要传入 element类型的数组指针。 你的list是int型的数组。
所以产生了你所列出的错误。
你应该定义一个element list[]; 若是element实质上 就是 用typedef 或是 #define 定义的指代int的类型的话。 那么 element list={1};就能正常运行了!!
阿晨1998
TA贡献2037条经验 获得超6个赞
你得问题可以这样解决:
int[1]肯定是个数组,只有一个变量,element是个结构体,也只有一个变量,那么他们得地址偏移量肯定是相同得。
int a[1];
void *p;
p=(void *)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)
{
int a[1]={0xabcd};
void *p;
p=(void *)a;
heap_sort((element*)a,1);
return 0;
}
添加回答
举报
0/150
提交
取消

