C语言指针交换问题216

来源:百度知道 编辑:UC知道 时间:2024/07/02 20:45:15
将变量x、y分别赋值3、4,编程对变量x、y进行交换输出
#include"stdio.h"
#include<string.h>
void swap(a,b)
int *a,*b;
{
int *t;
t=a;a=b;b=t;
return 0;
}
main()
{
int x,y;
void (*p)();
p=swap;
printf("x,y=");
scanf("%d,%d",&x,&y);
printf("\n x=%d,y=%d",x,y);
(*p)(&x,&y);
printf("\nX=%d,Y=%d",x,y);
}
以上都是书上照抄的。
用VC++运行下,
x,y=3,4回车运行结果是
x=3,y=4
x=3,y=4
数值没有被交换,这是什么原因???大家帮忙看一下。

你看的什么书啊?老掉牙了!

这样才能编译过:
#include<stdio.h>

void swap(int *a,int *b)
{
int *t;
t=a;a=b;b=t;
}

int main()
{
int x,y;
void (*p)(int *,int *);
p=swap;
printf("x,y=");
scanf("%d,%d",&x,&y);
printf("\n x=%d,y=%d",x,y);
(*p)(&x,&y);
printf("\nX=%d,Y=%d",x,y);
return 0;
}

这个程序,没有问题啊
交换的是指针,x和y是没有交换的啊!