|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
/*int swap(int i,int j)
{
int t;
t=i;i=j;j=t;
printf("in function i=%d,j=%d\n",i,j);
}
int main()
{
int i=4,j=9;
swap(i,j);
printf("out function i=%d,j=%d\n",i,j);
}*/
void swap(int p1,int p2)
{
int t;
t=p1;
p1=p2;
p2=t;
}
int main()
{
int a,b;
printf("请输入a和b");
scanf("%d %d",&a,&b);
printf("交换前a=%d b=%d\n",a,b);
swap(a,b);
printf("交换后a=%d b=%d\n",a,b);
}
萌新想请教一下为啥同样是交换的函数,swap函数中只是void和int的区别。可是两个结果完全不同,一个可以成功交换位置,一个却不会交换两个变量。
void swap(int *p1,int *p2)
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
int main()
{
int a,b;
printf("请输入a和b");
scanf("%d %d",&a,&b);
printf("交换前a=%d b=%d\n",a,b);
swap(a,b);
printf("交换后a=%d b=%d\n",a,b);
}
如果给swap函数中的变量变成指针,却可以进行交换。这又是为啥啊。
和int,void没关系
传入一个指针,操作的是地址,可以改变传入参数的值
而传入一个值,操作的是它的拷贝,是不可以改变的
|
|