您的位置:首页 > 其它

stl排序函数用户自定义比较函数扩展

2014-06-09 14:45 246 查看
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)))

两个语句的不同结果,提出自己的困惑,还请大神指教!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息