相关疑难解决方法(0)

指针转换为与qsort一起使用

从我正在阅读的书中复制的代码片段手:

/* scmp: string compare of *p1 and *p2 */
int scmp(const void *p1, const void *p2)
{
        char *v1, *v2;
        v1 = *(char **) p1; 
        v2 = *(char **) p2; 

        return strcmp(v1, v2);
}
Run Code Online (Sandbox Code Playgroud)

此函数与qsort一起使用以对字符串数组进行排序.我不明白的一点是,为什么v1 = *(char **) p1;不是只是v1 = (char *) p1;或者不会这样做; v1 = p1;?我想编译器应该自动对该分配进行类型转换.或者甚至,考虑一下:

/* scmp: string compare of *p1 and *p2 */
int scmp(const void *p1, const void *p2)
{
        return strcmp(p1, p2);
}
Run Code Online (Sandbox Code Playgroud)

我认为(我可能是非常错误)编译器应该强制转换p1p2char * …

c pointers casting

4
推荐指数
1
解决办法
750
查看次数

标签 统计

c ×1

casting ×1

pointers ×1