QQ837952151
QQ837952151
2019-12-19 20:30
采纳率: 80%
浏览 159

c语言编程问题:谁能解答一下以下代码的含义是什么,最好详细一点,指针的内容不是很懂

int comp(const void* j, const void* i)
{
return(*(char*)i - (char)j);
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • caozhy
    已采纳
    这个函数比较的是单个的字符,一般用来作为参数传给一个排序的函数
    比如qsort,实现字符串内对字符的排序(而不是按照字符串排序)。
    comp函数返回>0说明左边大,<0说明右边大,==0是一样大,因此可以作为排序的条件。
    如果你把ij颠倒,就是倒排序
    
    点赞 评论
  • qq_28249373
    shifenglv 2019-12-19 21:30

    i和j都是指针,而且都是空类型(void)的指针,空类型的指针只表明数据的地址,但没有表明数据的类型,如果要对数据进行操作,就需要知道数据的类型,因此在使用时要显式转换指针类型。这里是char类型,所以要用char*来转换。(char*)i目的是把指针i的类型转换为字符型的,再加一个*就是取指针所指空间的值。以上的代码跟以下的等效:

    int comp(const char* i,const char* j)
    {
        return *i-*j;
    }
    
    点赞 评论

相关推荐