#include<iostream>
using namespace std;
//array:元素首地址,elementSize:元素大小,len:元素个数,回调函数.
void PrintAny(void* array, int elementSize, int len, void(myPrint)(void data))
{
char* any = (char*)array;
for (int i = 0; i < len; i++)
{ //获取数组中每个元素的首地址
char* addr =(char*)( any + elementSize * i);
//交给用户打印
myPrint(addr);
}
}
//==========================================================
void myPrintInt(void* data)
{
int* tempdata = (int*)data;
cout << tempdata << endl;
}
void testOne()
{
int a[5] = { 1,2,3,4,5 };
PrintAny(a, sizeof(int), 5, myPrintInt);
}
//===========================================================
typedef struct PERSON
{
char name[64];
int age;
int score;
}Person;
void myPrintPerson(void data)
{
Person* p = (Person*)data;
cout << p->name << ":" << p->age << "-" << p->score << endl;
}
void testTwo()
{
Person p[] = { {"Liang",18,66}, { "Ben",19,76 }, { "Joh",20,86 } };
PrintAny(p, sizeof(Person), sizeof(p) / sizeof(Person), myPrintPerson);}
//=============================================================
int main()
{
testOne();
testTwo();
return 0;
}