c中的qsort

为什么其中的Comp函数传递的值是两个Constvoid*呢?能不能用void*?谢谢,求解释恩~编译器报错,我用的是codeblocks... 为什么其中的Comp函数传递的值是两个Const void*呢?能不能用void*?谢谢,求解释
恩~编译器报错,我用的是codeblocks
展开
 我来答
傅_波
2012-05-24 · TA获得超过132个赞
知道小有建树答主
回答量:230
采纳率:0%
帮助的人:156万
展开全部
那个是一个函数地址来的
属于回调函数!具体用法如下:(取自MSDN)
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int compare( const void *arg1, const void *arg2 );

int main( int argc, char **argv )
{
int i;
/* Eliminate argv[0] from sort: */
argv++;
argc--;

/* Sort remaining args using Quicksort algorithm: */
qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare );

/* Output sorted list: */
for( i = 0; i < argc; ++i )
printf( " %s", argv[i] );
printf( "\n" );
}

int compare( const void *arg1, const void *arg2 )
{
/* Compare all of both strings: */
return _stricmp( * ( char** ) arg1, * ( char** ) arg2 );
}

const是防止参数传进去之后,无意被修改而导致程序结果出错.(在这里)
const 它限定一个变量不允许被改变
追问
编译器在你用void变量的时候会报错,难道仅仅只是因为这个原因?”无意被修改而导致程序结果出错“?
追答
void 变量不能别编译器自动转换为const void
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式