高手看过来!!!
本菜鸟现在在学指针,感觉有点吃力啊!
下面是一段代码,问题在注释部分,请各位高手帮帮忙!
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
int compare(const void* a,const void*b)
{
return strcmp(*(char**)a,*(char**)b);
}
//*(char**)是什么意思?strcmp不是要求两个
//char*的参数就行吗?用char* a不就可以吗?
//但是出来结果不对啊!!!
void main()
{
char* p[]={"can","cat","cab","car","cap"};
qsort(p,5,sizeof(char *),compare);
//qsort是stdlib.h欲定义好的函数功能是排序
//要求四个参数分别是数组地址,数组元素个数
//数组元素长度,和一个
//函数指针int(_cdecl*)(const void*,const void*)
for(int i=0;i<5;i++)
cout<<p[i]<<endl;
}
而且很有趣的是strcmp()函数本身要求是字符型指针啊
若程序中没有qsort这个函数的话用(*(char**)来转换void型指针编译报错!
strcmp()函数对参数的要求应该和qsort没关系啊!