C语言111111

来源:百度知道 编辑:UC知道 时间:2024/05/30 04:52:12
swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
main()
{
int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a;pointer_2=&b;
if(a<b) swap(pointer_1,pointer_2);
printf("\n%d,%d\n",a,b);
}

为什么在swap函数中不用return?
swap(int *p1,int *p2)
{int *p;
p=p1;
p1=p2;
p2=p;
}
main()
{
int a,b;
int *pointer_1,*pointer_2;
scanf("%d,%d",&a,&b);
pointer_1=&a;pointer_2=&b;
if(a<b) swap(pointer_1,pointer_2);
printf("\n%d,%d\n",*pointer_1,*pointer_2);
}

和上面那个有区别?

1. swap()函数不需要用return语句来返回值;
2. 前者是将a与b的值进行了交换,point-1与point-2所指向的地址不变(即point-1依然指向a,point-2依然指向b);
后者是将point-1与point-2所指向的地址进行了交换(即point-1指向了b,point-2指向了a),但a与b的值没有交换和改变。

该函数不需要返回值
所以不用return语句
即使用了return,也是return;就是return后面直接没有变量或者常量,直接用分号结尾

传递进去的参数是2个地址,通过地址操作,交换了地址里的值

函数不需要有返回值,通过指针就可以实现。
1.。。。。
point-1赋给*p1,point-2赋给*p2
使用swap函数,temp不是指针,
两者进行地址交换,最终实现交换。
2.。。。。。
而*p是指针。三两两相互指向。
最终两者没有实现值交换。

前面那个是对的,后面那个调用的函数没有效果,不信自己写个程序看看,实际参数向形参的 传递是单向的,不能由形参改变实际参数的值,而第一个只是改变指针所对的元素

前者是交换的变量,后者是交换变量对应的地址,一样的

前者能够实现交换,后者不能。