|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
int main(void)
{
void swap(int*p1,int*p2);
int a,b;
int *pointer_1=NULL,*pointer_2=NULL;//pointer_1.pointer_2是int.型变量
printf("please enter two integer numbers:");
scanf("%d %d",&a,&b);
pointer_1=&a;
pointer_2=&b;
if(a<b) swap(pointer_1,pointer_2);//调用swap函数,用指针变量作实参
printf("max=%d,min=%d\n",*pointer_1,*pointer_2); return 0;
}
void swap(int*p1,int*p2){
int*p=NULL;
p=p1;
p1=p2;
p2=p;
}
该代码为什么a,b的值没有交换?
int a=1; int b=2; 假设 &a是地址0001,&b是地址0005
那么 pointer_1=0001; pointer_2=0005;
当你调用函数swap时,变成了p1=0001; p2=0005
你在函数中调换了p1、p2的值
最后p2=0001; p1=0005;
你只是改变了p1和p2两个变量的值,并没有影响到a和b
|
|