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啊
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 中的形参