#include <stdlib.h>
int int_sorter( const void *first_arg, const void *second_arg )
{
int first = *(int*)first_arg;
int second = *(int*)second_arg;
if ( first < second )
{
return -1;
}
else if ( first == second )
{
return 0;
}
else
{
return 1;
}
}
int main()
{
int array[10];
int i;
/* fill array */
for ( i = 0; i < 10; ++i )
{
array[ i ] = 10 - i;
}
qsort( array, 10 , sizeof( int ), int_sorter );
for ( i = 0; i < 10; ++i )
{
printf ( "%d\n" ,array[ i ] );
}
}
我不明白这一行:
int first = *(int*)first_arg;
谁能帮帮我?解释一下?非常感谢!!!
这是选角吗?显式转换,从 void*
到 int
?但是为什么我们需要 ()
之外的 & 符号呢?
最佳答案
您首先将 void 指针转换为 int 指针:
(int*)first_arg
然后取消引用指针:*(int*)first_arg
以获取它指向的整数。然后将其分配给整数变量。
关于c - C中的函数指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5547023/