为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

万千封印 2021-12-16 19:11:12
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};就能正常运行了!!

查看完整回答
反对 回复 2021-12-19
?
阿晨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;
}



查看完整回答
反对 回复 2021-12-19
  • 2 回答
  • 0 关注
  • 273 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号