void f(int *x,int *y) { int *t; t=x; x=y; y=t; } 请问这个函数实现了什么功能

但是
#include<iostream.h>
void f(int *x,int *y);
void main()
{
int a=-2,b=1;

f(&a,&b);
cout<<a<<b;
}
void f(int *x,int *y)
{ int *t; t=x; x=y; y=t; }
但是运行结果是 -21 是为什么

交换2个数
即:x变成y,y变成x
建议:
#include<iostream.h>
void f(int *x,int *y);
void main()
{
int a=-2,b=1;
cout<<&a<<endl; //添加
f(&a,&b);
cout<<&a<<endl; //添加
cout<<a<<b;
}
void f(int *x,int *y)
{ int *t;
cout<<x<<endl; //添加
t=x; x=y; y=t;
cout<<x<<endl; //添加 }
添加这些语句之后,你就能看明白你这个程序并没有交换a,b的地址
void f(int *x,int *y)
{ int t; //修改*t 为 t

t=*x; *x=*y; *y=t; //修改
}
这样就可以完成你要的功能了
但是这样交换的内容是值,而不是地址
你可以通过添加和上面一样的cout语句看得出
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-28
看你的意思是要交换两个整数,但你的函数是按值传递的,是不会真正交换的,应该改成按引用传递,如下:
void swip(int &a,int &b)
{
int t=0;
t=a;
a=b;
b=t;
}
void main()
{
int x=0,y=0;
cin>>x>>y;
swip(x,y);
cout<<"交换后的结果 x="<<x<<'\t'
<<"y="<<y<<endl
}
你的串号我已经记下,采纳后我会帮你制作
第2个回答  2010-11-22
实现不了什么功能吧…你在电脑上用用就能看出来了啊,这是个地址交换,最后换出来的只是xy指针交换了,原变量值没有换啊,最好还是用值传递吧int t;t=*x;x=*y;*y=t;反正我只确定这种可以交换值

参考资料:如果您的回答是从其他地方引用,请表明出处

第3个回答  2010-11-25
看你的意思是要交换两个整数,但你的函数是按值传递的,是不会真正交换的,应该改成按引用传递,如下:
void swip(int &a,int &b)
{
int t=0;
t=a;
a=b;
b=t;
}
void main()
{
int x=0,y=0;
cin>>x>>y;
swip(x,y);
cout<<"交换后的结果 x="<<x<<'\t'
<<"y="<<y<<endl
}
我可以帮助你,你先设置我最佳答案后,我百度Hii教你。
第4个回答  2010-11-22
交换了指针所对应的值

void f(int *x,int *y) { int *t; t=x; x=y; y=t; } 请问这个函数实现了...
void f(int *x,int *y){ int *t;cout<<x<<endl; \/\/添加 t=x; x=y; y=t;cout<<x<<endl; \/\/添加 } 添加这些语句之后,你就能看明白你这个程序并没有交换a,b的地址 void f(int *x,int *y){ int t; \/\/修改*t 为 t t=*x; *x=*y; *y=t; \/\/修改 } 这样就可...

void Func(int *x,int *y) {*x^=*y; *y^=*x; *x^=*y; } 这个函数的功能...
x' = (x xor y) xor (y xor (x xor y)) = x xor y xor x = 0 xor y = y 经过运算后y'(y的新值)是x,x'是y,完成了交换

C语言中 void f(int *x,int *y)
int *x:x是一个指针变量,指向一个int型数据,x本身的值是该int型数据的地址。int x:x本身就是一个int型数据 还有 int *f(int *x,int *y) 表示返回的是int类型的指针。

...int x: int y) { int tmp: tmp=x; x=y; y=tmp; return; } 问fun...
1.首先,你的这个函数中的两个冒号是不对的,第一个冒号应该改成逗号,第二个冒号应该改成分号,即:void fun (int x, int y) { int tmp; tmp=x; x=y; y=tmp; return; } 2.其次,这是一个用户自定义的、交换两变量值的函数,即用tmp作为一个媒介,将形式参数x和y的值对换。3.再次...

void swap(int *x, int *y) { int *t; *t = *x; *x = *y; *y = *t...
不能,指针t是野指针,没有指向有效内存,*t=*x此行试图写t指向的空间将会导致程序崩溃。

急求计算机二级考试的试题(C语言)
void f(int *x,int *y) { int t; t=*x;*x=*y;*y=t; } main() { int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p{f(p,q);p++;q--;} for(i=0;i<8;i++)printf("%d,",a[i]); } 程序运行后的输出结果是 A)8,2,3,4,5,6,7,1, B)5,6,...

int *f(int*x,int*y)是什么意思?
函数 f() 有 返回值,返回值的类型是 int * 指针型.所以这个函数体内 必定 有 return 语句,它返回 一个 int * 指针。例如: int *f(int*x,int*y){if (*x > *y) return x; else return y; } 调用:int main(){ int a=4,b=5;printf("%d", *f(&a,&b)); \/\/ ...

求解c语言的一些题目 100分 好的话追加
void f(int *x,int *y) { int t;t=*x; *x=*y; *y=t; }(17)程序的输出是—(17)——。 A、3 2 1 6 5 4 9 8 7 B、 7 8 9 4 5 6 1 2 3 C、1 2 3 4 5 6 7 8 9 D、1 4 7 2 5 8 3 6 9(18)将第8行改为”f(&a[I][j],&a[j][I]);”后,程序的输出是—...

#include <stdio.h> void fun(int*a, int*
结果是对原来的函数中的M、N没有任何影响,跟没有运行过这个函数一样。深度解析:写这个函数毫无意义,应该不是写程序人的本意,其本意似要交换M与N的值。那就要这样写:int *t;t=*a;a=*b;b=*t;或者稍简单一点:int t;t=*a;a=*b;b=t;不知分析的对不对。不明白之处,请留言。

用c语言编写程序,从键盘输入两个字符分别存放在变量x和y中,要求通过程 ...
include <stdio.h> void swap(int *x ,int *y){int t;t=*x;x=*y;y=t;} main(){ int a,b;a=50; b=60;swap(&a,&b);printf("%d# %d#\\n",a,b);} 用swap函数来交换。这里a=50,b=60 交换后a=60,b=50,希望对你有帮助。

相似回答