第1个回答 2013-05-13
形参和实参是完全不同的存储空间,形参发生改变,并不会影响实参,所以要想通过函数调用来改变实参的值,需要用地址来做实参,这样,形参也需要改成指针才行。
修改之后的如下:
#include<stdio.h>
int main()
{
void swap(char *x,char *y); //此处修改
char ch1='a',ch2='b';
printf("before:ch1=%c ch2=%c\n",ch1,ch2);
swap(&ch1,&ch2); //此处修改
printf("after:ch1=%c ch2=%c\n",ch1,ch2);
return 0;
}
void swap(char * x,char *y) //此处修改
{
char *ch; //函数体4行都修改
*ch=*x;
*x=*y;
*y=*ch;
}本回答被提问者采纳
第2个回答 2013-05-13
实参就是实际的数,比如你要计算身高,在主函数你声明一个变量
int main()
{
int length = 172;
int long = 50;//比如你又声明一个凳子的高度。
int result;
result = fun(length,long);
}
这个就叫实参,它就是你的数据。
型参就不同了,比如你想要写一个函数,来计算你站在凳子上有多高,你就可以这么写
int fun(int a,int b)
{
int c;
c = a+b;
return c;
}
看到没,不管你传什么进来,在函数里,我就把第一个参数叫做a,第二个参数叫做b,计算之后就返回结果。行参就是我函数要做的事情,和你这个数本身表示什么没有关系。
而且你如果要改变身高的值,你传个值进来是没有用的,你得传地址进来才行。因为你传值进来,只是让函数使用这个值,但并不改变它。