在main主函数中函数调用
int a[10] = {0};
int b[10] = {0};
randomArray(a, 10); //随机值
randomArray(b, 10); //随机值
changeBiger(a, b, sizeof(a) / sizeof(int), changeValue); //数值比较交换
printf("数值交换后\n");
for (int i = 0; i < 10; i++) {
printf("%d ",a[i]);
}
printf("\n");
for (int i = 0; i < 10; i++) {
printf("%d ",b[i]);
}
printf("\n");
函数中涉及到的函数定义:
void randomArray(int a[], int count) //随机生成元素
{
for (int i = 0; i < count; i++) {
a[i] = arc4random()% 21 + 20; //随机范围[20,40]
printf("%d ",a[i]);
}
printf("\n");
}
void changeValue(int *p1, int *p2) //数值比较交换
{
if (*p1 > *p2) {
int c = *p1;
*p1 = *p2;
*p2 = c;
}
}
void changeBiger(int a[], int b[],int count, CHANGE p) //使用回调函数
{
for (int i = 0; i < count; i++) {
p(&a[i], &b[i]);
}
}
程序执行结果为:
36 38 32 27 33 22 29 32 27 24
30 39 38 25 39 28 27 40 40 26
数值交换后
30 38 32 25 33 22 27 32 27 24
36 39 38 27 39 28 29 40 40 26
根据结果比较可以看出,我们的程序基本是实现了要求的功能!