#include <stdio.h> void fun (int *a, int *b) { int *c; c=a;a=b;b=c; } main ( ) { int x=3,y=5, *p=&x, *q=&y; fun(p,q); printf('%d,%d,',*p,*q) ; fun(&x, &y) ;printf('%d, %d ',*p, *q) ; }

输出的结果是:5, 3, 5, 3

具体过程如下:

  1. 定义了函数 fun,其中有三个指针变量 a、b、c,函数的作用是将 a 和 b 指向的变量的值交换。

  2. 在 main 函数中定义了两个整型变量 x、y,分别赋值为 3 和 5,并定义了两个指针变量 p 和 q,分别指向 x 和 y。

  3. 调用 fun 函数,将 p 和 q 作为参数传递进去。在函数内部,将指针 c 指向 a 指向的变量,然后将 a 指向 b 指向的变量,将 b 指向 c 指向的变量。即交换了 p 和 q 指向的变量的值。

  4. 输出 *p 和 *q 的值,分别为 5 和 3。

  5. 再次调用 fun 函数,将 x 和 y 的地址作为参数传递进去。在函数内部,同样是交换了指针 a 和 b 指向的变量的值。但此时 p 和 q 还是指向原来的变量 x 和 y,因此输出的 *p 和 *q 的值仍然为 5 和 3。

因此,最终的输出结果为 5, 3, 5, 3。

C语言指针交换函数:fun(p, q) 的工作原理及输出结果

原文地址: https://www.cveoy.top/t/topic/n2yz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录