下面做一个实验。研究函数传值问题。
实验1:
#include<stdio.h>
void myswap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
myswap(a,b);
printf("%d %d",a,b);
return 0;
}
在这种情况下,值是无法传递的。简单的数值传递。
void myswap(int x,int y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
myswap(a,b);
printf("%d %d",a,b);
return 0;
}
在这种情况下,值是无法传递的。简单的数值传递。
实验2:
#include<stdio.h>
void myswap(int *p1,int *p2)
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
myswap(&a,&b);
printf("%d %d",a,b);
return 0;
}
void myswap(int *p1,int *p2)
{
int t;
t=*p1;
*p1=*p2;
*p2=t;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
myswap(&a,&b);
printf("%d %d",a,b);
return 0;
}
在这种情况下,传地址可以保存数值。
实验3:
#include<stdio.h>
void myswap(int &x,int &y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
myswap(a,b);
printf("%d %d",a,b);
return 0;
}
这个地方在C文件下无法使用。只有在C++语言下可以使用。这里会报错。因为这里是地址传递,所以而简单使用一般的变量无法使其传递。但是我尝试使用指针传值,发现还是有问题。之后我会把问题补上来。
void myswap(int &x,int &y)
{
int t;
t=x;
x=y;
y=t;
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
myswap(a,b);
printf("%d %d",a,b);
return 0;
}
这个地方在C文件下无法使用。只有在C++语言下可以使用。这里会报错。因为这里是地址传递,所以而简单使用一般的变量无法使其传递。但是我尝试使用指针传值,发现还是有问题。之后我会把问题补上来。