#include <stdio.h>
void swap(int *a, int *b)
{
/*
* 此函数中:
* a和b是指向两个int类型的指针,
* 它们接受了main里面a和b的地址,
* 即:
* a = &a (in main());
* b = &b (in main());
* 所以对*a实际上就是对a(in main())操作
*/
printf("---swap:(a, b) = (%p, %p)\n", a, b);
printf("---swap:(&a, &b) = (%p, %p)\n", &a, &b);
printf("---swap:(*a, *b) = (%d, %d)\n", *a, *b);
int temp = *a;
*a = *b;
*b = temp;
printf("------------SWAPED------------\n");
printf("---swap:(a, b) = (%p, %p)\n", a, b);
printf("---swap:(&a, &b) = (%p, %p)\n", &a, &b);
printf("---swap:(*a, *b) = (%d, %d)\n", *a, *b);
}
int main()
{
int a=4, b=5;
printf("main:(&a, &b) = (%p, %p)\n", &a, &b);
printf("------------------------------\n");
swap(&a, &b);
printf("------------------------------\n");
printf("main:(&a, &b) = (%p, %p)\n", &a, &b);
printf("\n");
printf("a = %d, b = %d\n", a, b);
return 0;
}
运行结果: