如何将变量传递给函数?

前端之家收集整理的这篇文章主要介绍了如何将变量传递给函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_1@我使用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.

猜你在找的C&C++相关文章