深入理解函数的参数 您所在的位置:网站首页 CSGO524288是什么参数 深入理解函数的参数

深入理解函数的参数

2024-01-15 22:40| 来源: 网络整理| 查看: 265

目录

初步了解函数的参数

实际参数

形式参数

深入学习

初步了解函数的参数

函数是我们编写程序必定会用到的,但是我们真的有那么了解它吗?今天就让我们从形参和实参的角度深入学习函数。

接下来让我们上一个简单的代码,是判断是否为闰年的代码,初步了解函数的参数。

#include int isLeapYear(int year)//判断年份是否为闰年,是闰年返回1,否则返回0 { if ((0 == year % 4 && 0 != year % 100) || 0 == year % 400) return 1; return 0; } int main() { int year = 0; printf("请输入年份:"); scanf("%d", &year);//输入要判断的年份 if(isLeapYear(year))//输出判定结果 printf("%d是闰年",year); else printf("%d是平年", year); return 0; }

程序的逻辑比较简单,就是通过isLeapYear这个函数判断一个年份是不是闰年,是就返回1,不是就返回0。

我们要使用函数,就要先定义函数,我们代码的第二行就是定义了函数:

函数名后括号中的变量就是形式参数。

我们再来看看条件判断语句中调用的函数:

 真实传给函数的参数,叫实参。

实际参数

真实传给函数的参数,叫实参。

实参可以是:常量、变量、表达式、函数等。 无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形 参。  

形式参数

形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内 存单元),所以叫形式参数。

形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。

深入学习

接下来我们来直观看看实际参数和形式参数的区别到底是什么。

为了讲清楚,我们使用一段代码:

#include void change(int x,int y) { int z=0; z = x; x = y; y = z; } int main() { int a = 10; int b = 20; change(a, b); return 0; }

有了上面的知识,我们可以清楚地知道调用函数change时a,b是实参,x,y是形参,我们来看看这些参数的具体情况。

首先,我们可以看到在程序执行到函数被调用之前,a和b分别被赋值为10和20。

 

 随后,我们进入函数,可以看出x=10,y=20,但是我们可以明显的观察到在下面那一栏中,a,b和x,y的地址是完全不一样的,a和b的地址分别是0x0019f87c和0x0019f870,而x,y的地址分别为0x0019f780和0x0019f784,由此得出函数的实参和形参分别储存在不同的地址中,形参的改变并不会改变实参中的数值。因为形参调用的是相应的地址中的数据,而不能调用实参地址中的数据。

 最后等函数调用结束之后x,y的数值交换了,而a,b的数值并没有改变。

 最后,当函数调用完成之后局部变量和形参就自动销毁了。因此形式参数只在函数中有效。

 这里可以看到change函数在调用的时候 x , y 拥有自己的空间,同时拥有了和实参一模一样的内容。 所以我们可以简单的认为:形参实例化之后其实相当于实参的一份临时拷贝。

知识分享到此结束,喜欢我的小伙伴,可以点赞、评论、加关注,我会努力更新的。

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有