关于函数调用的总结

例1:该代码正确实现了a和b的交换
在实现a和b的交换过程中,利用a和b地址进行传参,改变a和b的地址存放内容,使其在swap函数的内部实在a和b的交换。

#include <stdio.h>
void swap(int* x, int* y){
	int  temp;
	temp = *x;
	*x = *y;
	*y =  temp;
}
int main(){
	int a = 10;
	int b = 20;
	printf("%d%d\n",a,b);
	 swap(&a, &b);
	printf("a=%d, b=%d\n", a, b);
	system("pause");
	return 0;
}
//a,b 交换时,实际是对a,b 的地址进行交换。

运行结果:
在这里插入图片描述
例1:改代码是错误的,没有实现a和b交换.

#include <stdio.h>
#include <stdlib.h>
void swap(int x, int y){
	int  c;
	c = x;
	x = y;
	y = c;
}
int main(){
	int a = 10;
	int b = 20;
	swap(a, b);
	printf("a=%d, b=%d\n", a, b);
	system("pause");
	return 0;
}

运行结果:
当主函数运行到swap()函数是立即将其调用,虽然在形参的时候仿佛实现a和b交换,但实际只是形参x和y本身进行了交换而实际实参的a和b根本没有发生交换,这就是属于实参和形参在调用的过程需要注意的。
在这里插入图片描述
关于函数调用的简单理解:
首先实际就是一定要分清楚形参和实参的关系。(形参实例化之后实际上只是实参的一份拷贝)
实际参数(实参):
真实传给函数的参数,叫实参。也可以叫做决定该程序运行结果的一部分。位于主函数int main ()下面的。无论实参是何种类型的量,在进行函数调用时他们必须有确定的数值,以便把这些数值传给形参。
形式参数(形式参数):
形式参数是指函数名字括号中的变量,因为形式参数只有在函数被调用的过程中才实例化,所以叫做形式参数。形式参数在自动调用完之后就进行消失。只在函数中有效。
真正决定函数值的是实参。

例2,求出a和b的最大值。
//当主函数运行到swap()函数是立即将其调用,虽然在形参的时候仿佛实现a和b交换,但实际只是形参x和y本身进行了交换而实际实参的a和b根本没有发生交换,这就是属于实参和形参在调用的过程需要注意的。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
//返回x和y中的最大值
//函数的定义
 double Max (double   x, double  y){
	if (x > y){
		return x;
	}
	return y;
}
int main(){
	//函数的调用	
	printf("%f\n", Max(10.00, 20.00));
	system("pause ");
	return 0;
}

运行结果:
在这里插入图片描述
函数调用的执行过程:
函数调用会进入到函数体内部执行,遇到return语句,函数就结束了,回到调用位置的下一行继续执行。
下图简要展示本例题调用的全部过程:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值