数组可以作为形式参数使用
数组做形式参数的时候真正的形式参数并
不是数组而是一个可以作为数组使用的
变量
数组形式参数里包含的存储区都不是被调用
函数提供的
声明数组形式参数的时候可以省略中括号
里的整数
使用数组形式参数的时候必须配合一个整数
类型的形式参数,这个参数用来表示
数组里的存储区个数
数组形式参数可以让被调用函数使用其他函数
的存储区
调用函数和被调用函数都可以自由使用数组
形式参数里的存储区,所以数组形式参数
可以实现双向数据传递,具有这种特征的
形式参数叫输入输出参数 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. HDU 5293

    树上DP题. 其实有点类似于01的问题.方程很容易想到.首先,因为一条链的节点其实都是在树上的,所以很容易想到应该先求一个LCA.然后,当某节点不是链的LCA时,它的转移就是: dp[i]=sum[i ...

  2. 揭秘传智播客班级毕业薪资超7k的内幕系列之四----汽车工的华丽转身

         ---不是本科毕业?不是计算机专业?做过电子厂?做过数控?看传智中专生侃项目,"侃晕"项目经理.从流水线上华丽转身,8.5k高薪再就业      系列三承诺写写上海传智J ...

  3. Lightoj 1235 - Coin Change (IV) 【二分】

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1235 题意: 有N个硬币(N<=18).问是否能在每一个硬币使用不超过两 ...

  4. 如何注释ascx中的代码

    https://forums.asp.net/t/1783252.aspx?Commented+out+ascx+code+not+treated+as+commented+out+ <%--  ...

  5. poj 1061(扩展欧几里得定理求不定方程)

    两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特 ...

  6. B1934 [Shoi2007]Vote 善意的投票 最小割

    一开始不太会,结果看完题解就是一个建图的网络流.然后就结了. 题干: 题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人 ...

  7. 快速排序及三向切分快排——java实现

    快速排序也是一种分治算法.主要思想是选取一个切分点,将大于切分点的元素都放置到数组右侧,小于切分点的元素都放置到数组左侧:然后递归,再对切分点左侧和右侧分别排序. 归并排序时递归在前,归并在后,快速排 ...

  8. Python 34(进程了解)

    一:僵尸进程与孤儿进程 测试程序: 基本概念: 一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中. ...

  9. Windows:Word,PPT,EXCEL com+组件配置

    本文所涉及到配置前提: 服务器必须安装Office套件(Word,PPT,Excel) 第一部分 Word Com+组件权限配置 1.cmd模式输入dcomcnfg 2.找到Microsoft Wor ...

  10. golang 字符串替换截取

    package main import "fmt" func main() { str := "XBodyContentX" content := str[1 ...