函数

作者: Tn299 | 来源:发表于2023-02-27 20:11 被阅读0次
image.png

注:main函数是项目必须要有的主函数,是程序的入口,启动程序时直接从main进,return结束。所以自己定义的函数如果有输出的话不进入主函数是不会显示输出的。所以就要进行函数的调用。

返回值类型:函数执行完之后,返回出一个什么类型的数据。如果需要返回一个值出去,就用return把值返回出去(return 0,return a,return...),一般return写在函数的最末尾。如果不需要返回一个值出去,那么返回值类型就可以用void,那就可以不用写return。

函数的调用

image.png

流程:从main主函数进去,执行Tn299的函数,然后再去上面寻找名为Tn299的函数执行,然后再往下就是return 0。

形参列表和实参列表

形参列表用在函数名的括号内


image.png

定义:


image.png
需要调用函数时,就用到实参
image.png
注意:碰到return(void中也一样)表示已经结束了,如果下面有代码也不会执行,跟break类似。

形参调用举例:


image.png

局部变量与全局变量

定义:


image.png

通俗解释局部变量,如下图所示:


image.png
定义了变量名一样的变量,但是程序却可以执行,是因为变量在不同的区域(花括号)内,出了这个区域变量就消逝了。
image.png

上图就是因为变量b定义在了别的区域(花括号)中,所以赋值的时候会报错。

全局变量:在区域外定义的变量!所有地方都可以用!


image.png

如果没有给全局变量赋值那么系统默认为0。

静态变量

定义:


image.png

我们的程序内存有四个区域:


image.png

静态全局区:静态数据、全局变量等。
栈区:局部变量等,栈区的内存会被自动申请和自动释放。
堆区:自己申请的内存
代码区:函数

例: image.png

第一回合后a=11,第二次循环的时候a没有消逝(因为a是静态变量),所以a申请内存失败,a还是11,所以执行下一条a=12...如果a是局部变量,那么就会:


image.png

函数的声明

定义:


image.png

举例:


image.png
像这种情况是会报错的,因为代码从上到下执行,在上面并未找到one函数的定义,但如果声明了,那就是可以执行的。
image.png

一般来说,可以现在最上面声明各个函数,然后再在下面对函数进行定义。(有花括号的叫函数的定义,没有花括号的叫函数的声明)

image.png

所以不能只声明不定义!!

函数的嵌套调用

重点:
1.址传递
2.数组作为函数的参数
3.函数的递归

地址:在定义变量,数组,函数等等,系统会给他们分配内存区域(地址)
&:&a 表示得到a的地址
*:定义指针变量的标识(指针也相当于是地址)
指针变量:存执地址的变量
整型变量:储存整数的变量
字符型变量:...

image.png
&a表示a的地址,所以上面表示的是将a的地址赋值给指针d。

*:也可以解引用,取内容。

所以符号*在定义的时候是指针变量,不在定义变量的时候就是解引用!!

1.址传递(形参为地址)

如果形参为数字就是值传递


image.png

&a表示a的地址,fun函数接收到地址之后就开始执行函数,占位符*d表示输入的地址被解开了,所以输出的是a的值。以上功能也就是说取谁的地址就显示该地址内部的数据。

址传递的形参可以改变实参的值!!

image.png
而值传递不能改变实参的值。

数组作为函数的参数

顾名思义就是用数组作为函数的形参。

例: image.png
以上的fun函数的形参就是由数组构成的,len表示数组的长度,功能就是实现输出数组中各个元素(总不能碰到一个数组就写一个for循环吧)。用数组作为形参的时候,调用时候只需要写数组名,不用写[]。

函数的递归

定义:在一个函数中,重复的调用自己本身。(自己调用自己)
例:

image.png
为什么会这样呢!!(答案来了)
:我们先是正常的程序从上往下走,i=10满足if的语句,所以执行下面的内容,i--和再次调用fun函数,所以一开始printf并未实施,所以就一直在循环if直到i等于5,然后执行printf语句,但是!(重点来了)前几次的printf都在fun函数中是肯定的会执行的,所以在循环完之后,会回调!!(把未执行的语句执行完)把之前没输出的printf输出,所以就有五个5。
例: image.png
这种情况下的printf也会回调n的大小顺序是43210。到0之后就不会循环if语句,所以回调的顺序是1234。
例: image.png
也是用递归做的输出的是第10个元素的值。

课后练习:
作业1:


image.png
答: image.png
作业2: image.png
答: image.png

相关文章

  • Excel(三)

    AND函数 OR函数 NOT函数 IF函数 频率分析函数FREQUENCY

  • if、else if、for、while、repeat函数

    ①if函数 ②else if函数 ③for函数 ④while函数 ⑤repeat函数

  • strsplit、mapply、paste、match函数

    strsplit函数 mapply函数 strsplit函数 mapply函数 paste函数 match函数 第...

  • Oracle中常用函数(SQL)

    Oracle函授有以下几个分类:数字函数、字符函数、日期函数、转换函数、集合函数、分析函数 数字函数: 字符函数:...

  • MySQL函数

    字符函数 数字运算函数 比较运算符和函数 日期时间函数 信息函数 聚合函数 加密函数 流程函数

  • BI-SQL丨AND & OR & IN

    AND函数 & OR函数 & IN函数 AND函数、OR函数和IN函数都可以理解是WHERE函数的补充,当然也可以...

  • Python之函数

    课程大纲 函数定义 函数的参数 函数的返回值 高阶函数 函数作用域 递归函数 匿名函数 内置函数 函数式编程 将函...

  • 函数基本知识

    函数 函数的定义: def 函数名() 函数的调用:函数名() #不能将函数调用放在函数定义上方 函数的文档注...

  • 积分表——不定期更新

    基本初等函数包括: 常函数: 幂函数 指数函数 对数函数 三角函数 反三角函数 I、反函数Ⅱ、复合函数:初等函数(...

  • MySQL基本使用

    函数 常用函数 数学函数 字符串函数 日期函数

网友评论

      本文标题:函数

      本文链接:https://www.haomeiwen.com/subject/ukecldtx.html