x = 7, y = 10
a = 1.33, b = 2.55
x = 10, y = 7
a = 2.55, b = 1.33
1 2 3 4
9 10 11 12
Program ended with exit code: 0
main.c
#include <stdio.h>
#include <stdlib.h> // malloc
#include <string.h> // memcpy
void swap(void*, void*, int);
void show(int[], int);
//int main(void)中,void可不写,但为保持良好的代码风格最好写上
int main(void) {
int x = 7, y = 10;
double a = 1.33, b = 2.55;
int ar[] = {9, 10, 11, 12};
int br[] = {1, 2, 3, 4};
printf("x = %d, y = %d\n", x, y);
printf("a = %.2lf, b = %.2lf\n", a, b);
swap(&x, &y, sizeof(x));
swap(&a, &b, sizeof(a));
swap(ar, br, sizeof(ar));
printf("x = %d, y = %d\n", x, y);
printf("a = %.2lf, b = %.2lf\n", a, b);
show(ar, sizeof(ar) / sizeof(int));
show(br, sizeof(br) / sizeof(int));
return 0;
}
void swap(void* a, void* b, int size) {
void* tmp = malloc(size);
memcpy(tmp, a, size);
memcpy(a, b, size);
memcpy(b, tmp, size);
free(tmp);
return;
}
void show(int ar[], int size) {
for (int i = 0; i < size; i++)
printf("%d ", ar[i]);
printf("\n");
return;
}