数组可以作为形式参数使用
数组做形式参数的时候真正的形式参数并
不是数组而是一个可以作为数组使用的
变量
数组形式参数里包含的存储区都不是被调用
函数提供的
声明数组形式参数的时候可以省略中括号
里的整数
使用数组形式参数的时候必须配合一个整数
类型的形式参数,这个参数用来表示
数组里的存储区个数
数组形式参数可以让被调用函数使用其他函数
的存储区
调用函数和被调用函数都可以自由使用数组
形式参数里的存储区,所以数组形式参数
可以实现双向数据传递,具有这种特征的
形式参数叫输入输出参数 C语言里函数参数的个数可以不固定
这种参数叫做变长参数
不能在编写函数的时候给变长参数命名,
在被调用函数里可以通过特殊的方法
获得没有命名参数的内容 如果编译器首先遇到函数调用语句就会猜测
函数的格式。计算机认为函数有一个整数
类型的存储区用来存放返回值,函数可以
接受任意多个不确定类型的参数。
这个猜测结果叫做函数的隐式声明
隐式声明里参数的类型只能是整数类型或
双精度浮点类型
如果函数的真实格式和隐式声明格式不同
则编译的时候就会出错
可以把函数大括号前面的部分单独写成一条
语句,这种语句叫做函数声明语句
把函数声明语句放在文件开头叫做显式函数
声明
函数的显示声明可以避免隐式声明的发生
函数声明语句里可以省略形式参数的名称 除了主函数以外的所有函数都应该显示声明 exit标准函数可以立刻结束程序的执行
为了使用这个标准函数需要包含stdlib.h头文件
这个函数需要一个整数类型的参数,这个参数
的作用和主函数返回值的作用一样 C语言里函数可以调用自己
这种函数叫做递归函数 如果一个问题可以拆分成多个小问题,至少
一个小问题和原来的问题在本质上一样但是
稍微简单一点。这种问题就适合采用递归
函数解决。 递归函数编写步骤
.编写语句解决分解后的每个小问题
(这个时候要假设递归函数已经完成,
可以使用)
.在递归函数开头编写分支解决不可分解
的情况(这个分支必须可以让函数结束) 使用递归函数解决问题的方法叫递归
使用循环解决类似问题的方法叫递推 检验递归函数的时候先用最简单的参数检验,
然后逐渐把参数变复杂继续检验。如果
所有参数的检验都能成功就说明递归
函数编写正确。 C语言里一个变量只能被某些语句使用,能
使用某个变量的所有语句叫做那个变量
的作用域
声明在某个函数里面的变量叫做局部变量
局部变量的作用域就是函数里面的所有语句
声明在所有函数外边的变量叫全局变量
全局变量的作用域包含程序里的所有语句
没有初始化的全局变量会自动被初始化成0
全局变量和局部变量可以重名,重名变量名
优先代表局部变量
如果全局变量和局部变量都能解决问题就
应该优先选用局部变量 存储区的使用不受作用域限制,但是受到
生命周期限制
生命周期指一段时间,在生命周期开始的时候
计算机把存储区分配给程序使用,在
生命周期结束的时候计算机把存储区收回
全局变量的生命周期就是整个程序的执行时间
局部变量的生命周期是函数某一次执行的
时间范围

递归、作用域、生命周期(day09)的更多相关文章

  1. 存储类&作用域&生命周期&链接属性

    链接属性 (1)大家知道程序从源代码到最终可执行程序,经历的过程:编译.链接. (2)编译阶段就是把源代码搞成.o目标文件,目标文件里面有很多符号和代码段.数据段.bss段等分段.符号就是编程中的变量 ...

  2. 7、存储类 & 作用域 & 生命周期 & 链接属性

    概念解析 存储类 存储类就是存储类型,也就是描述C语言变量在何种地方存储. 内存有多种管理方法:栈.堆.数据段.bss段..text段······一个变量的存储类属性就是描述这个变量存储在何种内存段中 ...

  3. C语言-存储类&作用域&生命周期&链接属性

    1.概念解析(1)存储类 a.存储类就是存储类型,也就是描述C语言变量在何种地方存储. b.内存有多种管理办法:栈.堆.数据段.bss段..text段......一个变量的存储类属性就是描述这个变量存 ...

  4. struts1的ActionForm的作用域(生命周期)

    转自:http://biancheng.dnbcw.info/java/240347.html 今天查找一个问题:我在列表页面添加一个查询条件,然后查询符合条件的数据.查询结果正确.然后我进入其它菜单 ...

  5. C的变量类型、作用域与生命周期的总结

    C的变量类型.作用域与生命周期的总结 最近在看"C Programing Language" (Kernighan, Ritchie)关于外部变量的讨论,之前在学C的时候对这些ex ...

  6. Mybatis中的基本对象的生命周期和作用域

    不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题 SqlSessionFactoryBuilder 这个类可以被实例化.使用和丢弃,一旦创建了 SqlSessionFact ...

  7. 07、NetCore2.0依赖注入(DI)之生命周期

    07.NetCore2.0依赖注入(DI)之生命周期 NetCore2.0依赖注入框架(DI)是如何管理注入对象的生命周期的?生命周期有哪几类,又是在哪些场景下应用的呢? -------------- ...

  8. 018-019 NET5_内置容器支持依赖注入+IServiceCollection的生命周期

    概念: DI依赖注入: IServiceCollection仅支持构造函数注入 什么是依赖注入? 如果对象A依赖对象B,对象B依赖对象C,就可以先构造对象C,然后传递给对象B,再把对象B传递给A.得到 ...

  9. Spring中Bean的作用域、生命周期

                                   Bean的作用域.生命周期 Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).protot ...

随机推荐

  1. [Cypress] Create Aliases for DOM Elements in Cypress Tests

    We’ll often need to access the same DOM elements multiple times in one test. Your first instinct mig ...

  2. 计算几何 二维凸包问题 Andrew算法

    凸包:把给定点包围在内部的.面积最小的凸多边形. Andrew算法是Graham算法的变种,速度更快稳定性也更好. 首先把全部点排序.依照第一keywordx第二keywordy从小到大排序,删除反复 ...

  3. iOS 基础类解析 - NSData、NSMutableData

    iOS 基础类解析 - NSData.NSMutableData 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致& ...

  4. ios 导航栏(自己定义和使用系统方式)

    系统方式: //1.设置导航栏背景图片 [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] ini ...

  5. CodeForces 444C. DZY Loves Physics(枚举+水题)

    转载请注明出处:http://blog.csdn.net/u012860063/article/details/37509207 题目链接:http://codeforces.com/contest/ ...

  6. [Java]LeetCode57 Insert Interval

    Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...

  7. QT 4.53 for VS2005 编译包

    最近学QT,装了QT5,结果打开下载的项目(特别是那些书的源代码)有很多兼容性问题.于是又下载4.83,都是4版本系列的,应该会好很多吧,但居然也是这样.于是看了一下时间,觉得4.53于2009年底发 ...

  8. CMDBuild安装

    近日来,老板要在内部部署一套IT资产管理系统,要笔者去调研一下,测试了GLPI.OCSNG(没记错吧)和CMDBuild之后,发现还是CMDBuild的功能较为强大,虽然暂时不具备SNMP之类的工具, ...

  9. Android Back键和Home键的区别

    back键 Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来,销毁当前Activity.当此Activit ...

  10. C#备份及还原数据库的实现代码(粗略) // 利用C#还原数据库(SQL SERVER)备份文件到指定路径

    C#数据库备份及还原 1.在用户的配置时,我们需要列出当前局域网内所有的数据库服务器,并且要列出指定服务器的所有数据库,实现代码如下: 取得数据库服务器列表: public ArrayList Get ...