2010-4-13<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
问题:
#include <stdlib.h>
#include <stdio.h>
int compare_int(int *a,int *b)
{
return(*a-*b);
}
void main(void)
{
int int_values[]={1,3,2,4,5};
int *int_ptr,int_value=2,elements=5;
int_ptr=lfind(&int_value,int_values,&elements,sizeof(int),
int (*) (const void *,const void *) compare_int);
//在函数原型中这里说明的是一个函数指针,
//但这里我看不懂int (*) (const void *,const void *) compare_int
//是一个函数指针吗?
if(*int_ptr)
printf("\nValue is found!\n");
else
printf("\nValue not foune!\n");
}
解答:
int (*) (const void *,const void *) compare_int
这段代码将compare_int作了强制类型转换:
int (*) (int* a, int* b)
==>
int (*) (const void*, const void*)
为了匹配lfind的最后一个参数类型;
相当于:
typedef int (*COMPARE_FUNC) (const void*, const void*);
int_ptr = lfind(&int_value,int_values,&elements,sizeof(int),
(COMPARE_FUNC) compare_int );
点评:
Good!
tengjingshu_112148725 2010-4-14 09:18
用户1432516 2008-12-24 19:38