需要从函数中返回多于1个变量值时,最常用、也较简单的办法是在主调函数中声明变量,把变量的地址传给被调函数,在被调函数中通过指针直接操作主调函数中的变量。如此题中在主调函数中声明x和y,把x和y的地址(指针)传给被调函数。举例如下:
成都创新互联公司主要从事网站制作、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务彭水苗族土家族,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
void f(int *x,int *y){
*x=10;
*y=34;
}
int main(void){
int x,y;
f(x,y);
printf("x = %d\ny = %d\n",x,y);
return 0;
}
大家都知道c语言主函数中交换两个变量的值,可以通过以下代码实现:
#includestdio.h
int main()
{
int a=10,b=20,temp;//先定义一个temp
//以下实现两个变量的交换(具体理解请参照图一)
temp=a;
a=b;
b=temp;
printf("a=%d,b=%d",a,b);//此时a=20,b=10;
return 0;
}
但是如何通过调用函数实现交换两个变量的值呢?
首先我们先写一下主函数
#includestdio.h
//调用函数前应先声明一下被调用函数,此处暂时省略,分析完毕形参后,会写上正确格式
//主函数
int main()
{
int a=10,b=20;
swap( );//此处正确写法应加入实参,但是为了分析,此时暂未写实参
printf("a=%d,b=%d",a,b);
return 0;
}
//以下为被调用函数中常见错误
//常见错误1:
void swap( int m,int n )//接收a和b的值
{
int temp=m;
m=n;
n=temp;
}
//此处错误在于,此处为值传递,被调函数swap中交换了m和n的值,并未交换主函数中a,b的值,所以a和b输出结果仍然为a=10,b=20;具体参考下图
//常见错误2:
void swap( int *m,int* n )//接收a和b的地址
{
int *temp=m;//定义一个指针temp,把指针m中的地址赋给指针temp
m=n;
n=temp;
}
//此处错误在于,swap中实现了,两个指针m和n指向的交换,但是并未对主函数中的a和b进行操作,所以输出结果依然为a=10,b=20;具体参考下图
c语言中用函数交换两个变量的值方法是先将变量赋值给中间变量,然后中间变量再赋值给另外一个变量,程序如下:
#include "Stdio.h"
#include "Conio.h"
void swap(int x,int y)
{
int t,m;
t=x; //变量x赋值给中间变量t
m=y; //变量y赋值给中间变量m
x=m; //中间变量m赋值给变量x,将y的值赋值给了x。
y=t; //中间变量t赋值给变量y,将x的值赋值给了y。
}
main()
{
int a,b;
a=1,b=2;
swap(a,b); //调用交换函数
printf("%d,%d",a,b);
getch();
}
扩展资料:
C语言的语法结构:
1、顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子里面的水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c;执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b =c;则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。
顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算、输出三步曲的程序就是顺序结构。
2、选择结构
对于要先做判断再选择的问题就要使用选择结构。选择结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。选择结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的选择语句。
选择结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。
3、循环结构
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do while循环和for循环。
四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误。
参考资料来源:百度百科-C语言
问的问题不够清楚。
可以在子函数中定义,并输入.
例子;
int max(void)
{
int x,y;
printf("input two number:\n");
scanf("%d%d",x,y);
if(xy)
return x;
else
return y;
}
这个无法交换数据。
C语言函数参数的基本规则是值传递,所以传递时只能实现实参向形参的单向的、值的传递。这就是为什么需要使用指针才能实现值交换的原因。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款