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

来源:互联网 发布:北平无战事曾可达 知乎 编辑:程序博客网 时间:2024/06/06 13:20

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)))

两个语句的不同结果,提出自己的困惑,还请大神指教!!



0 0
原创粉丝点击