c++的STL的qsort函数,在自定义比较函数时,cmp函数如下:
int pstrcmp(const void *p1, const void *p2)
{
return strcmp((char*)(*(int*)(p1)), (char*)(*(int*)(p2)));
}
测试函数如下:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
char **str=new char*[3];
str[0]=new char[8];
strcpy(str[0],"4873279");
str[1]=new char[8];
strcpy(str[1],"3101010");
str[2]=new char[8];
strcpy(str[2],"4873279");
printf("%x\n",str[1]);
// printf("%d\n",str+1);
// printf("%x\n",(char*)(*(int*)(str+1)));// output adress ,same with above
// printf("%x\n",(*(char*)(str)));//output 40H
// printf("%x\n",(char*)(*(char*)(str)));//output 40H
qsort(str,3,8,pstrcmp);
cout<<str[0]<<endl;
cout<<str[1]<<endl;
cout<<str[2]<<endl;
return 0;
}
去掉注释,看看输出结果.
这里只对
printf("%x\n",(char*)(*(char*)(str)));
printf("%x\n",(char*)(*(int*)(str+1)))
两个语句的不同结果,提出自己的困惑,还请大神指教!!