递归、作用域、生命周期(day09)
数组可以作为形式参数使用
数组做形式参数的时候真正的形式参数并
不是数组而是一个可以作为数组使用的
变量
数组形式参数里包含的存储区都不是被调用
函数提供的
声明数组形式参数的时候可以省略中括号
里的整数
使用数组形式参数的时候必须配合一个整数
类型的形式参数,这个参数用来表示
数组里的存储区个数
数组形式参数可以让被调用函数使用其他函数
的存储区
调用函数和被调用函数都可以自由使用数组
形式参数里的存储区,所以数组形式参数
可以实现双向数据传递,具有这种特征的
形式参数叫输入输出参数 C语言里函数参数的个数可以不固定
这种参数叫做变长参数
不能在编写函数的时候给变长参数命名,
在被调用函数里可以通过特殊的方法
获得没有命名参数的内容 如果编译器首先遇到函数调用语句就会猜测
函数的格式。计算机认为函数有一个整数
类型的存储区用来存放返回值,函数可以
接受任意多个不确定类型的参数。
这个猜测结果叫做函数的隐式声明
隐式声明里参数的类型只能是整数类型或
双精度浮点类型
如果函数的真实格式和隐式声明格式不同
则编译的时候就会出错
可以把函数大括号前面的部分单独写成一条
语句,这种语句叫做函数声明语句
把函数声明语句放在文件开头叫做显式函数
声明
函数的显示声明可以避免隐式声明的发生
函数声明语句里可以省略形式参数的名称 除了主函数以外的所有函数都应该显示声明 exit标准函数可以立刻结束程序的执行
为了使用这个标准函数需要包含stdlib.h头文件
这个函数需要一个整数类型的参数,这个参数
的作用和主函数返回值的作用一样 C语言里函数可以调用自己
这种函数叫做递归函数 如果一个问题可以拆分成多个小问题,至少
一个小问题和原来的问题在本质上一样但是
稍微简单一点。这种问题就适合采用递归
函数解决。 递归函数编写步骤
.编写语句解决分解后的每个小问题
(这个时候要假设递归函数已经完成,
可以使用)
.在递归函数开头编写分支解决不可分解
的情况(这个分支必须可以让函数结束) 使用递归函数解决问题的方法叫递归
使用循环解决类似问题的方法叫递推 检验递归函数的时候先用最简单的参数检验,
然后逐渐把参数变复杂继续检验。如果
所有参数的检验都能成功就说明递归
函数编写正确。 C语言里一个变量只能被某些语句使用,能
使用某个变量的所有语句叫做那个变量
的作用域
声明在某个函数里面的变量叫做局部变量
局部变量的作用域就是函数里面的所有语句
声明在所有函数外边的变量叫全局变量
全局变量的作用域包含程序里的所有语句
没有初始化的全局变量会自动被初始化成0
全局变量和局部变量可以重名,重名变量名
优先代表局部变量
如果全局变量和局部变量都能解决问题就
应该优先选用局部变量 存储区的使用不受作用域限制,但是受到
生命周期限制
生命周期指一段时间,在生命周期开始的时候
计算机把存储区分配给程序使用,在
生命周期结束的时候计算机把存储区收回
全局变量的生命周期就是整个程序的执行时间
局部变量的生命周期是函数某一次执行的
时间范围
递归、作用域、生命周期(day09)的更多相关文章
- 存储类&作用域&生命周期&链接属性
链接属性 (1)大家知道程序从源代码到最终可执行程序,经历的过程:编译.链接. (2)编译阶段就是把源代码搞成.o目标文件,目标文件里面有很多符号和代码段.数据段.bss段等分段.符号就是编程中的变量 ...
- 7、存储类 & 作用域 & 生命周期 & 链接属性
概念解析 存储类 存储类就是存储类型,也就是描述C语言变量在何种地方存储. 内存有多种管理方法:栈.堆.数据段.bss段..text段······一个变量的存储类属性就是描述这个变量存储在何种内存段中 ...
- C语言-存储类&作用域&生命周期&链接属性
1.概念解析(1)存储类 a.存储类就是存储类型,也就是描述C语言变量在何种地方存储. b.内存有多种管理办法:栈.堆.数据段.bss段..text段......一个变量的存储类属性就是描述这个变量存 ...
- struts1的ActionForm的作用域(生命周期)
转自:http://biancheng.dnbcw.info/java/240347.html 今天查找一个问题:我在列表页面添加一个查询条件,然后查询符合条件的数据.查询结果正确.然后我进入其它菜单 ...
- C的变量类型、作用域与生命周期的总结
C的变量类型.作用域与生命周期的总结 最近在看"C Programing Language" (Kernighan, Ritchie)关于外部变量的讨论,之前在学C的时候对这些ex ...
- Mybatis中的基本对象的生命周期和作用域
不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题 SqlSessionFactoryBuilder 这个类可以被实例化.使用和丢弃,一旦创建了 SqlSessionFact ...
- 07、NetCore2.0依赖注入(DI)之生命周期
07.NetCore2.0依赖注入(DI)之生命周期 NetCore2.0依赖注入框架(DI)是如何管理注入对象的生命周期的?生命周期有哪几类,又是在哪些场景下应用的呢? -------------- ...
- 018-019 NET5_内置容器支持依赖注入+IServiceCollection的生命周期
概念: DI依赖注入: IServiceCollection仅支持构造函数注入 什么是依赖注入? 如果对象A依赖对象B,对象B依赖对象C,就可以先构造对象C,然后传递给对象B,再把对象B传递给A.得到 ...
- Spring中Bean的作用域、生命周期
Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...
随机推荐
- Bean Query 改动Bug的版本号(1.0.1)已公布
改动内容: 修复输入对象被排序的属性不存在或者为Null时出错的bug 在Maven项目中引用 <dependency> <groupId>cn.jimmyshi</gr ...
- jQuery总结02
1 如何搭建一个 jQuery 环境? 2 jQuery 对象与 DOM 对象一样吗?区别是什么? 3 jQuery选择器类型有哪些?
- C++源码实现:21种常用设计模式
C++源码实现:21种常用设计模式一直以来在设计模式的学习中,都是出现java的源码,这对学习C++的极度不友好.本工程是基于C++实现21种常用的设计模式,里面包含了实例代码和示例.编写的时候在学习 ...
- PCB MS SQL SERVER版本管控工具source_safe_for_sql_server
PCB由于业务关系复杂,业务触发一个事件时,可能需与数据库多个表进行关连处理才能拿到数据结果, 而表关连并不是简单的关连,实际是要进行大量数据筛选,逻辑判断,转换等过程...这个过程是复杂的 想一想, ...
- codevs1688 求逆序对(权值线段树)
1688 求逆序对 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 给定一个序列a1,a2,…, ...
- Moon Http Server,强大如斯的全脚本web服务器
Moon Http Server(MHS) 是一个使用Pascal脚本的高性能Web服务器. 昨天晚上是第一次接触.花了30分钟入门,非常强大.是Delphi 者开发Web的福音. 引用一下作者的介绍 ...
- 如何让 vue 在 sublime 中变成彩色的
在 sublime 中编辑 vue 时,导入后是纯白色的文本,如下图: 想让其变成彩色的文本,需要安装插件,步骤如下: 1. 按住:Ctrl + Alt + P 2. 输入:install Packa ...
- 【K8s】Kubernetes架构理解
抽空学习了一下Kubernetes,感觉和大数据领域内集群的资源管理.任务调度等有异曲同工之处,简单总结一下备忘. [概念] Kubernetes是一个工业级的容器编排平台,单词有点长,常用K8s代称 ...
- 线性预测与Levinson-Durbin算法实现
在学习信号处理的时候,线性预测是一个比较难理解的知识点,为了加快很多朋友的理解,这里给出Levinson-Durbin算法的线性预测实现和一个测试Demo,Demo中很明确的把输入信号.预测信号.预测 ...
- HTML+CSS+JS总结
==================HTML(超文本标记语言)========== <!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前.此标签可告 ...