69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
typedef void show_arr(void *arr, int len);
void visit(void *arr, int len, show_arr pfunc)
{
pfunc(arr, len);
}
void show_int(void *arr, int len)
{
int i;
int *array = (int *)arr;
for (i = 0; i < len; i++)
printf("%d ", array[i]);
putchar(10);
}
void show_char(void *arr, int len)
{
int i;
char *array = (char *)arr;
for (i = 0; i < len; i++)
printf("%c ", array[i]);
putchar(10);
}
void show_float(void *arr, int len)
{
int i;
float *array = (float *)arr;
for (i = 0; i < len; i++)
printf("%f ", array[i]);
putchar(10);
}
void show_double(double *arr, int len)
{
int i;
double *array = (double *)arr;
for (i = 0; i < len; i++)
printf("%lf ", array[i]);
putchar(10);
}
void show_string(void *arr, int len)
{
int i;
char **str = (char **)arr;
for (i = 0; i < len; i++)
printf("%s ", str[i]);
putchar(10);
}
int main(void)
{
int arr[8] = { 1, 2, 3, 5 };
char *str[3] = {"hello", "world"};
visit(arr, 8, show_int);
visit(str, 3, show_string);
return 0;
}
viod printAny(void* a, int len, int kind) {
switch (kind) {
case 0: //char*
char *c = (char*)a;
for (int i=0; i<len; i++) {
print("%c ", c[i]);
}
break;
case 1: //int*
//依此类推
case 2: //long*
...
default:
}
}