#include
#include
int main()
{
int a, b;
a = 5;
b = 9;
Swap( a, b );
printf("a=%d,b=%d",a,b);
return 0;
}
void Swap( int x, int y )
{
int temp;
temp = x;
x = y;
y = temp;
}
1.会报错是因为你将函数定义在了函数的外部,因此在main函数中,应该对该函数进行声明;
2.你这样的函数调用方式(值传递)是不会改变主函数中的值得;应该采用地址传递;代码如下:
#include<stdio.h>
#include <stdlib.h>
/*值传递的形式*/
void Swap( int x, int y );
void Swap01( int *x, int *y )
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
int main()
{
int a, b;
a = 5;
b = 9;
puts ("----------------");
printf("a=%d,b=%d\n",a,b);
Swap( a, b );
puts ("----------------");
Swap01 (&a,&b);
printf("a=%d,b=%d\n",a,b);
system ("pause");
return 0;
}
void Swap( int x, int y )
{
int temp;
temp = x;
x = y;
y = temp;
printf ("a = %d,b = %d\n",x,y);
}
不知道是不是我的原因。我这显示你的include后面没有东西。而且Swap函数定义放在了调用之后
是语法错误吗?头文件没加上,还有输出语句引号里用空格就可以。
#include
void Swap( int x, int y )
{
int temp;
temp = x;
x = y;
y = temp;
printf("a=%d,b=%d",x,y);
}
int main()
{
int a, b;
a = 5;
b = 9;
Swap( a, b ); //调用函数,因为函数在上面,不用声明。
return 0;
}
形式参数是无法修改实参的,建议你不要用调用函数的方法!或者改用指针!
建议看看形参与实参的传递。
有两个错误:
1.函数传参的时候使用的是传值,而不是传址,所以交换没用,建议改用指针
2.Swap()定义在主函数的后面,所以应该会出现未定义错误,建议在主函数前面声明一下Swap()
#include
void Swap( int &x, int &y )
{
int temp;
temp = x;
x = y;
y = temp;
printf("a=%d,b=%d",x,y);
}
int main()
{
int a, b;
a = 5;
b = 9;
Swap( a, b ); //调用函数,因为函数在上面,不用声明。
return 0;
}
swap的参数用引用或者指针即可.
形参改变,实参并没有变。
你只是把值传递进去了,你看到的交换只是在子程序中的交换
值传递不影响main方法里的参数
数传递的方式有三种:值传递、引用传递、指针传递。能够将形参的数传到实参的后两种可以实现。
C语言值传递和地址传递的区别问题。http://blog.sina.com.cn/s/blog_66ec4d660100pt5g.html