- /*
- * 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;
- }
来源: http://www.bubuko.com/infodetail-3340298.html