书中所说是为函数指针,并且将函数指针作为函数参数,请解释一下下面函数的意思#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/07/01 08:09:10
![书中所说是为函数指针,并且将函数指针作为函数参数,请解释一下下面函数的意思#include#include#includeusing namespace std; int f(const void *a,const void *b)char c[3][4]={](/uploads/image/z/5165899-43-9.jpg?t=%E4%B9%A6%E4%B8%AD%E6%89%80%E8%AF%B4%E6%98%AF%E4%B8%BA%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88%2C%E5%B9%B6%E4%B8%94%E5%B0%86%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88%E4%BD%9C%E4%B8%BA%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0%2C%E8%AF%B7%E8%A7%A3%E9%87%8A%E4%B8%80%E4%B8%8B%E4%B8%8B%E9%9D%A2%E5%87%BD%E6%95%B0%E7%9A%84%E6%84%8F%E6%80%9D%23include%23include%23includeusing+namespace+std%3B+int+f%28const+void+%2Aa%2Cconst+void+%2Ab%29char+c%5B3%5D%5B4%5D%3D%7B%22cab%22%2C%22cap%22%2C%22can%22%7D%3Bvoid+main%28%29+%7B+qsort%28%28void%2A%29c%2C3%2C)
书中所说是为函数指针,并且将函数指针作为函数参数,请解释一下下面函数的意思#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有几格,