C语言中函数调用,为什么交换了地址,可是所指的值还是不变那?求函数的运行结果#includevoid swap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){int x=3,y=5,*p=&x,*q=&y;swap(p,q);printf("%d%d\n",*p,*q);结果是35照例来说虽然

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 14:09:52
C语言中函数调用,为什么交换了地址,可是所指的值还是不变那?求函数的运行结果#includevoid swap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){int x=3,y=5,*p=&x,*q=&y;swap(p,q);printf(

C语言中函数调用,为什么交换了地址,可是所指的值还是不变那?求函数的运行结果#includevoid swap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){int x=3,y=5,*p=&x,*q=&y;swap(p,q);printf("%d%d\n",*p,*q);结果是35照例来说虽然
C语言中函数调用,为什么交换了地址,可是所指的值还是不变那?
求函数的运行结果
#include
void swap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{int x=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
结果是35
照例来说虽然被调用函数没有返回值,但是指针所指的地址不是发生了交换吗.那*p和*q所指值不是也应该发生变换吗,应该是53啊.各位不好意思我能悬赏的分不多.要考二级了

C语言中函数调用,为什么交换了地址,可是所指的值还是不变那?求函数的运行结果#includevoid swap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){int x=3,y=5,*p=&x,*q=&y;swap(p,q);printf("%d%d\n",*p,*q);结果是35照例来说虽然
#include<stdio.h>
void swap(int *a,int *b)
{
  int t=0;   
   t=*a;
   *a=*b;
   *b=t;
}
int main()

  int x=3,y=5;
  int *p=&x,*q=&y;
  swap(p,q);
  printf("%d %d\n",*p,*q);
  printf("%d %d\n,a,b);  //看看是不是 a,b也改变了!!
}
你那个错误,我的估计: 你可以用vc++单步调式一下.也可以完全理解的.
p=&x  就是把  x的地址保存在 指针 p中.  *p 就是得到  值. *p=3.
q也差不多.
你下面  sqap(p,q) . 就是把地址传过去了.
可是传回来的值没有改变,为什么呢!
原因很简单.
因为你的 
int *t;
int*t;
t=a;a=b;b=t;
交换的是  a和b 的地址.
不要忘记了,当调用一个函数时.
os会为  swap 函数中的  int *a,int *b.开辟内存.
你改变的是swap开辟的内存.并没有改变 main中的*p和*q内存区域.
我再说清楚点.
p 保存的是 &a    q保存的是  &b
swap函数   a 保存的也是 &a    b保存的也是&b   
                  你用交换了 a和b的 地址.有什么用.没有改变原来的地方的地址.
只是改变了你自己的 a 和 b里面的地址.   没有改变那边的 真正的  3 和 5.
如果用了   
int t;
 t=*a;
 *a=*b;
 *b=t;
就是间接去改变那边的值.
通过里面 &a,&b,的地址来找到  真是的 3,5  然后就改变了.

C语言中函数调用,为什么交换了地址,可是所指的值还是不变那?求函数的运行结果#includevoid swap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){int x=3,y=5,*p=&x,*q=&y;swap(p,q);printf(%d%d ,*p,*q);结果是35照例来说虽然 C语言用指针法交换两个数的顺序问题交换两个数的顺序,可以交换地址,可以交换值.当用函数调用法交换地址的时候,为什么不可以实现.程序如下:#include//这是用一个主函数就交换的方法.main( c语言交换两个数的问题?交换两个数的顺序,可以交换地址,可以交换值.当用函数调用法交换地址的时候,为什么不可以实现.程序如下:这样可以实现两个数的交换#include void swap(int *x,int *y);void c语言中怎么调用自定义函数 有关c语言指针的地址传递问题如图,我用指针和函数编写的,为什么最后结果不会进行交换,比如我输入1 2 结果还是1 2 按道理说p本来指向a的地址,q指向b的地址,我用swap函数交换后应该是改变了 while(!再帮忙解释一下宏定义的函数(交换两个变量值)在主函数调用时就可以直接换,而由C语言中值的单向传递,定义一个函数,在主函数调用时不能令两值交换,为什么?还有其他个例吗? 请问C语言中函数定义,函数声明和函数调用的区别? 编写c语言程序,实现交换两个变量值的操作.要求:使用形参为指针的函数swap完成交换功能.主函数中,使用整型指针从键盘输入两个整数,通过调用swap完成交换输出交换前后的变量值进行比较. 在c语言中,假设定义了a,b,c三个函数,在b函数中调用a函数,注意b函数是在调用完a函数后形成的函数,那么在c函数中还可以调用b函数吗? 编写交换两个变量值的函数,并调用该函数交换主函数中两个变量的值C表示 谁会用C语言 写“定义函数返回两个数中较大的数,在主函数中调用并输出.编写主函数调用该函数”. 我想问一下图中这个C语言函数调用划线部分是什么意思? 谭浩强c语言设计第三版的8.6 函数的递归调用中出现的, 下面这两句话错在哪,为什么?1.c语言程序总是从第一个定义的函数开始执行2.在c语言程序中,要调用的函数必须在main()函数中定义 C语言编写一个求n阶乘的函数,在主函数中输入n,调用函数求n阶乘. c语言环境下编写一个函数,输出语句:I love china!,并在主函数中调用该函数 c语言中主函数中定义的变量,调用函数里还需要再定义吗? 在C语言程序中,被调用的函数必须在main( )函数中定义 这句话对吗、、、