C语言 看看这个小程序

来源:百度知道 编辑:UC知道 时间:2024/05/18 21:53:17
#include<stdio.h>

void fun(int *a,int *b)
{
int*k;
k=a;
a=b;
b=k;

}

void main()
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf("%d %d",a,b);

} 输出结果为什么是3,6
我觉得应该是6,3啊

x,y,a,b之间都是独立的...你改变了x,y的指向,并没有改变a,b的值...

fun()改为如下:

void fun(int *a,int *b)
{
int k;
k=*a;
*a=*b;
*b=k;

}

就是按楼上那样改的!!!!!!!!

你这里只是修改了指针变量的值,

并没有修改指针所指向的变量的值

原变量的里面的值不变!

这行void fun(int *a,int *b) 改为 void fun(int *&a,int *&b)
即传递指针的引用。因为你要交换的是a,b的地址,而不是函数 fun 中的形参