扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这是谭浩强那本书上一个很典型的程序,看看书就能改了。
10年积累的成都网站建设、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有睢宁县免费网站建设让你可以放心的选择与我们合作。
给你个答案参考一下:
#includestdio.h
void exchange(int *x,int *y);//此处将函数返回类型修改为void型,因为函数本来就没返回值。参数全部改为指针型。
int main(void)
{
int a,b;
printf("请输入a,b\n");
scanf("%d%d",a,b);
exchange(a,b);//此处参数变为取地址a,b
printf("a=%d,b=%d",a,b);
return 0;
}
void exchange(int *x,int *y)//根据函数声明一并修改
{
int *i;//所要操作的数据都是指针,所以这里缓存也要变为指针。
i=x;
x=y;
y=i;
}//本来就没返回值为啥原题要声明成返回值为int型的函数呢?
形参是一个变量,是在引用的函数中的变量
实参也是一个变量.是在主函数中的变量.
两个变量的使用范围不同.
形参只在子函数中使用,实参可以在主函数中使用.
上面,实参写成100,是说,在形参用100代进去.
而形参只能是一个变量,用来吸收实参传递进来的值,以输出结果.
主要有两种:(1)值传递:在函数调用时,将实参的值复制一份传递到调用函数中,这样,如果在调用函数中修改了参数的值,也不会影响到实参的值。(2)引用传递:与(1)相反,即会影响实参的值。如何区分它们呢?实际上,通常在定义函数时,如果参数为数组、指针或引用类型时,函数采用引用传递,否则采用值传递。
void fun(int *a, int *b)
{
int *c;
c=a;a=b;b=c;
}
因为函数中,形参a,b中保存的都是实参的地址值,c=a;a=b;b=c;这行代码,只是把形参a,b的地址值进行了互换,对调用函数的实参所保存的结果是没有任何影响的。如果换成如下代码:
void fun(int *a, int *b)
{
int c;
c=*a;*a=*b;*b=c;
}
互换的是指针所指空间的值,即互换了调用函数的实参所保存的数值
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流