如何将变量传递给函数?
发布时间:2020-12-16 05:00:26 所属栏目:百科 来源:网络整理
导读:我使用stdlib.h中的qsort, void qsort (void* base,size_t num,size_t size,int (*compar)(const void*,const void*)); 以下列方式: void myfun (float *arr,int n,float c) // value of c is changeable{...// some codeqsort(float *arr,n,sizeof(float),
我使用stdlib.h中的qsort,
void qsort (void* base,size_t num,size_t size,int (*compar)(const void*,const void*)); 以下列方式: void myfun (float *arr,int n,float c) // value of c is changeable { ...// some code qsort(float *arr,n,sizeof(float),compareme); ...// some code } 同 int compareme (const void * a,const void * b) { float tmp = f((float*)a,(float*)b,c ); // f is some function,and how can I pass c here? if (tmp < 0) return -1; if (tmp == 0) return 0; if (tmp > 0) return 1; } 我怎样才能在比较中使用c? 谢谢! 解决方法
许多人诉诸于使用(令人讨厌的)全局变量.
qsort()不包含仅传递给用户提供的compar()函数的额外void指针参数,这太糟糕了.我最终写了自己的qsort()来克服这个限制. 原型: int myQsort( void *arrayBase,size_t elements,size_t elementSize,int(*compar)(const void *,const void *,void *callerArg),void *callerArg ); 这允许我将各种结构(强制转换为void *)传递给我的compar()fn. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |