gpt4 book ai didi

c - C中的函数指针问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:07 26 4
gpt4 key购买 nike

#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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com