大佬帮忙分析下这个程序,类型转换不是很理解,谢谢各位了!
#include<math.h>#include<stdio.h>
#include <stdlib.h>
#include <string.h>
void * func(void *str1,void *str2,void * (*p)(void * str3, void *str4))
{
return (*p)(str1,str2);
}
void * mystrcat(void * str1,void *str2)
{
strcat(str1,str2);
return (void *)str1;
}
void * mystrlen(void * str1,void *str2)
{
int i=strlen(str1);
return (void *)i;
}
void * mystrcpy(void * str1,void *str2)
{
strcpy(str1,str2);
return (void *)str1;
}
void * mystradd(void * str1,void *str2)
{
int i=(int)str1+(int)str2;
return (void *)i;
}
int main()
{
char str1[20]="hello";
char *str2="world";
printf("%d\n",(int)func((void *)str1,(void *)str2,mystrlen));
printf("%s\n",(char *)func((void *)str1,(void *)str2,mystrcat));
printf("%s\n",(char *)func((void *)str1,(void *)str2,mystrcpy));
printf("%d\n",(int)func((void *)100,(void *)200,mystradd));
}
[此贴子已经被作者于2018-5-22 10:43编辑过]