假设我在C中有一个指向char的指针数组:
char *data[5] = { "boda", "cydo", "washington", "dc", "obama" };
Run Code Online (Sandbox Code Playgroud)
我希望使用qsort对这个数组进行排序:
qsort(data, 5, sizeof(char *), compare_function);
Run Code Online (Sandbox Code Playgroud)
我无法提出比较功能.由于某种原因,这不起作用:
int compare_function(const void *name1, const void *name2)
{
const char *name1_ = (const char *)name1;
const char *name2_ = (const char *)name2;
return strcmp(name1_, name2_);
}
Run Code Online (Sandbox Code Playgroud)
我做了很多搜索,发现我必须**在qsort里面使用:
int compare_function(const void *name1, const void *name2)
{
const char *name1_ = *(const char **)name1;
const char *name2_ = *(const char **)name2;
return strcmp(name1_, name2_);
}
Run Code Online (Sandbox Code Playgroud)
这很有效.
任何人都可以解释*(const char **)name1这个功能的使用吗?我根本不明白.为什么双指针?为什么我原来的功能不起作用?
谢谢,Boda …