返回信息流看到c标准库里提供的qsort()函数
参数中有个指向函数的指针
int (* comp)(const void * p1,const void *p2)
这个函数是调用strcmp,需要把指针类型转化
man qsort
static int comp(const void * p1,const void *p2)
{
return strcmp(* (char * const *) p1, * (char * const *) p2);
}
指针类型是怎么转化的?
这是一条镜像帖。来源:北邮人论坛 / cpp / #26003同步于 2009/7/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请教强制类型转化的问题
nkutobupt
2009/7/9镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
我只用这样的...
return strcmp( (const char * ) p1, (const char *) p2);
你那个应该是转成了指向指针的指针,然后再解一层引用...
我也觉得这样转化就好了
不知为什么要那样写
【 在 PtwCJ 的大作中提到: 】
: 我只用这样的...
: return strcmp( (const char * ) p1, (const char *) p2);
: 你那个应该是转成了指向指针的指针,然后再解一层引用...
man qsort:
static int
cmpstringp(const void *p1, const void *p2)
{
/* The actual arguments to this function are "pointers to
pointers to char", but strcmp(3) arguments are "pointers
to char", hence the following cast plus dereference */
return strcmp(* (char * const *) p1, * (char * const *) p2);
}
【 在 nkutobupt (九河下梢之nkutobupt) 的大作中提到: 】
: 标 题: Re: 请教强制类型转化的问题
: 发信站: 北邮人论坛 (Thu Jul 9 14:14:38 2009), 站内
:
: 我也觉得这样转化就好了
: 不知为什么要那样写
: 【 在 PtwCJ 的大作中提到: 】
: : 我只用这样的...
: : return strcmp( (const char * ) p1, (const char *) p2);
: : 你那个应该是转成了指向指针的指针,然后再解一层引用...
:
: --
: 当华美的叶片落下,生命的脉络才历历可见。我们的爱情像北方冬天的枝干一样,清晰、勇敢、坚强。
:
: ※ 来源:·北邮人论坛 http://forum.byr.edu.cn·[FROM: 202.108.130.*]
如果用qsort排序字符串数组,这个比较函数是不行的。
【 在 PtwCJ 的大作中提到: 】
: 我只用这样的...
: return strcmp( (const char * ) p1, (const char *) p2);
: 你那个应该是转成了指向指针的指针,然后再解一层引用...
const的char*指针
【 在 PtwCJ (鲜的每日C|女共产党员的男朋友) 的大作中提到: 】
: 还有个问题,这里面的const修饰的是哪个*?