C 函数与指针(function & pointer)
/* * function.c * 函数在C中的使用 * */ #include <stdio.h> int noswap(int x, int y) { /* * 函数会将传进来的参数复制一份,所以main中的x和y和noswap函数中的x和y的地址不同 * 因而,在这个函数中对x和y的操作并不会影响到main函数中的x和y * */ printf("在noswap函数中:\n"); printf("x的值为%d,地址为%p\n", x, &x); printf("y的值为%d,地址为%p\n", y, &y); int tmp = x; x = y; y = tmp; } int swap(int *x, int *y) { /* * 在这个函数中,参数是两个指针,这两个指针存储的main函数中x和y的地址 * 因此,可以通过这两个指针,对main函数中的x和y进行调换 * */ printf("在swap函数中:\n"); printf("指针x指向的地址为%p,值为%d,指针本身的地址为%p\n", x, *x, &x); printf("指针y指向的地址为%p,值为%d,指针本身的地址为%p\n", y, *y, &y); int tmp = *x; *x = *y; *y = tmp; } int main(void) { int x = 3, y = 5; printf("在main函数中:\n"); printf("x的值为%d,地址为%p\n", x, &x); printf("y的值为%d,地址为%p\n", y, &y); noswap(x, y); printf("经过noswap函数,x=%d,y=%d\n", x, y); swap(&x, &y); printf("经过swap函数,x=%d,y=%d\n", x, y); return 0; }