函数的主要内容:
函数的概念,设计,实现(定义)
变量的作用域和生存期
递归函数
1,函数的概念: function,功能模块
在C语言中,函数是完成某个特定功能的指令序列的封装。
(1)函数可以实现代码复用
(2)函数有利于实现模块化设计
(3)函数可以灵活的组合调用
"函数就是实现某个功能的指令序列"
函数的设计:
需求分析: 你得知道完成什么事情
然后完成这个事情需要什么资源:数据,内存开销等等
具体的功能实现 ==> 算法
反馈一个结果
函数的实现(定义)
返回类型 函数名(输入参数列表)
{
语句(指令序列)
}
"返回类型":函数返回值的类型,即return语句后面那个表达式的值的类型,
一般是"单值"类型",即基本类型或指针类型。
返回也可以没有返回值,即void类型,如果不指定返回类型,默认为int型。
"函数名":C语言标识符,把该名字与函数关联起来。
"输入参数列表":功能模块的输入。格式如下:
参数类型1 参数名1,参数类型2 参数名2,...
函数也可以没有参数,即void。
注意: 函数是不能嵌套定义的,即函数的定义必须在函数外面。
函数的调用:
主调函数:调用其他函数的函数
被调函数:被别人调用的函数
"实际参数":在函数调用过程中,主调函数传递给被调函数的输入参数值。简称为"实参"。
"形式参数":被调函数在定义时的参数。简称为"形参"。
★函数的调用过程:
(1)把实参的值赋值给相应的形参
(2)然后运行函数主体中的语句
(3)函数调用结束后,函数表达式的值就是return后面表达式的值(也可以没有返回值)
return 有两个作用
(1)结束函数。
(2)返回一个值
数据的传递:
主 => 被调函数 : 参数
被 => 主调函数 : 返回值
主 <=>主调函数 : 全局变量
2,变量的作用域与生存期
作用域: 变量名能代表该内存空间的范围
全局变量:
在函数外面的,且定义在最前面的变量叫全局变量。
全局变量的作用域:自定义处到文件结束(别的文件也能调用,但需要用extern声明)
但是,如果一个全局变量有static修饰,那么这个全局变量的作用域就仅在本文件中。
局部变量:
在函数体内或复合语句内定义的变量,叫局部变量
局部变量的作用域:自定义处起到函数或复合语句结束(即到第一个右花括号结束)
★不同作用域的两个变量,必是两个独立的空间。即使同名,则就近往上找。
★形参不能改变实参(形不改实):当主调函数调用被调函数且实际参数是变量时,
则被调函数里形参变量的值的改变不会影响到实际参数。
原因:形参只是被调函数里的局部变量,与实参变量是两个独立的存储单元,只是
形参变量的值被赋值为实参变量的值而已,两者互不影响。
生存期: 生存周期,过了生存期,其内存空间就会被释放掉。
全局变量的生存期,随进程持续性:你的程序一运行(进程),全局变量就会一直存在,
直到你的进程退出。
局部变量的生存期:
(1)普通局部变量
普通局部变量的生存期,是随定义它的函数或复合语句持续性。(到最近的右花括号)
(2)static 局部变量
static int a;
static 局部变量的生存期,随进程持续性,且其定义时的初始化只执行一次。
3,递归
递归函数,是指函数调用过程中,直接或间接调用了自身。
C语言递归函数设计步骤:
(1)问题的模型本身要符合递归模型
(2)先明确函数要实现的功能与参数之间的关系,暂不管功能的实现
(3)问题的解,当递归到一定层次时,答案是显而易见的,且能结束函数
(4)呈现第n层与n-1层之间的递归关系
函数
最新推荐文章于 2023-04-06 21:17:32 发布