一道令人迷茫的题目??
c和c++代码精粹上有这么一道题:
#include <stdlib.h>
#include <stdio.h>
int comp(const void*,const void*);
int main()
{
int i;
char* a[]={"a","abc","bc","dfgdg"};
int n=sizeof a/sizeof a[0];
qsort(a,n,sizeof a[0],comp);
for(i=0;i<=n;++i)
{
printf("%s",a[i]);
printf(" ");
}
system("pause");
}
int comp(const void* p1,const void* p2)
{
const char** ps1=(const char**) p1;
const char** ps2=(const char**) p2;
return strcmp(*ps1,*ps2);
}
我把comp函数定义成:
int comp(const void* p1,const void* p2)
{
const char* ps1=(const char*) p1;
const char* ps2=(const char*) p2;
return strcmp(ps1,ps2);
}
运行结果也对 我搞不明白定义成const char** ps1=(const char**) p1;
有什么样的好处 和 意义