相关疑难解决方法(0)

如何在C中输入指向char的指针数组?

假设我在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 …

c sorting qsort double-pointer

23
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

double-pointer ×1

qsort ×1

sorting ×1