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;
}
12-25 16:15