书中所说是为函数指针,并且将函数指针作为函数参数,请解释一下下面函数的意思#include#include#includeusing namespace std; int f(const void *a,const void *b)char c[3][4]={"cab","cap","can"};void main() { qsort((void*)c,3,
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/07 21:19:01
书中所说是为函数指针,并且将函数指针作为函数参数,请解释一下下面函数的意思#include#include#includeusing namespace std; int f(const void *a,const void *b)char c[3][4]={"cab","cap","can"};void main() { qsort((void*)c,3,
书中所说是为函数指针,并且将函数指针作为函数参数,请解释一下下面函数的意思
#include
#include
#include
using namespace std;
int f(const void *a,const void *b)
char c[3][4]={"cab","cap","can"};
void main()
{
qsort((void*)c,3,4,f);//讲一下这个排序函数各个参数的类型和意义,书上书第四个参数应该是函数指针,但是这个f好像不是吧?
for(int i=0;i
书中所说是为函数指针,并且将函数指针作为函数参数,请解释一下下面函数的意思#include#include#includeusing namespace std; int f(const void *a,const void *b)char c[3][4]={"cab","cap","can"};void main() { qsort((void*)c,3,
Note1:
f本来应该是这样:
int f(const char**a,const char**b) { return strcmp(a,b); }
a,b都指向string,而string在C是 char*,所以a,b都是char**.
strcmp是以字典顺序比较 *a和 *b 这两个string.*a 前於 *b 就返回 -1,相等就0,後於就1.
但为了合於qsort的规格,所以a,b只好先写成 const void* 然後再转型.
要求 const void* 的好处是 a,b 可以指向任何型态的对象,
Note2:
指向f的函数指针是 &f,但可以简写为f.
Note3:
qsort的第一参数是 void*,意思是指向一个array.
第二参数是说明array有几格,
第三参数是说明array中每格占几个byte.
qsort的末参数是个函数指针,由qsort的调用者提供,负责比较array中的某两格的大小.第二参数是说明array有几格,