9.函数介绍

数组也可以作为形式参数使用
数组作为形式参数使用时真正的形式参数不是数组,而是
    一个单一的变量。这个变量可以当作数组使用。
和数组形式参数对应实际参数可以是数组名称
声明数组形式参数的时候不需要写存储区个数
通常为数组形参提供另外一个形式参数用来表示数组中
    存储区的个数
数组形参中所包含的存储区在两个函数之间共用,任何
    一个函数对这些存储区的修改可以被另外一个函数
看到
普通变量做形式参数只能把数据从调用函数传递给被
    调用函数,所以叫做输入参数
数组做形式参数既可以把数据从调用函数传递给被调用
    函数,也可以把数据从被调用函数传递给调用函数,
这种参数叫输入输出参数


函数由两部分构成,大括号里的叫函数体,大括号前面
    的叫函数声明
函数声明可以单独构成一条语句,这个时候可以省略
    形式参数的名称


如果编译器编译是首先遇到函数调用语句则会猜测函数的
    格式(猜测结果认为函数有一个整数类型返回值存储区
并且可以接受任意多个任意类型的形式参数),这个
过程叫函数的隐式声明。
隐式声明不可靠,因为函数的实际格式可能和猜测的格式
    不一致。
应该把文件中所有函数的声明单独写成一条语句放在文件
    开头(主函数例外),这个方法叫函数的显示声明。
这可以避免函数隐式声明的发生。


会调用自己的函数叫递归函数
如果一个问题本身很复杂无法直接找到答案,但是它可以
    被分解成几个小问题,至少有一个小问题和原来的
大问题在本质上是一样的只不过简单一点。这种
问题就适合采用递归方法来解决。


编写递归函数的过程
1.用语句描述出问题的分解方式(这时要假设递归
    函数已经完成了)
2.在递归函数的开头写一个分支把不可分解的情况
    处理掉(这个分支必须能让函数结束)


大多数使用递归可以解决的问题都可以采用循环解决
使用递归函数解决问题的思路叫递归
使用循环解决类似问题的思路叫递推




变量的生命周期决定了变量在什么时间范围内可以使用
变量的作用域决定了哪些语句可以使用这个变量


如果它们之间产生矛盾则生命周期起决定作用


生命周期和作用域都是由存储区的主人决定的


声明在所有函数之外的变量叫全局变量,它们的主人
    是整个程序的一次执行过程
全局变量的生命周期是整个程序某一次运行期间
全局变量的作用域包含程序中所有语句
没有初始化的全局变量自动被初始化成0


声明在某个函数内部的变量叫局部变量,它们的主人
    是函数的某一次执行过程
这种变量的生命周期是函数某一次执行的时间范围
这种变量的作用域是函数内部的所有语句


函数内部的大括号叫做语句块
语句块内部声明的变量叫块变量
块变量的生命周期是语句块一次执行过程的时间范围
块变量的作用域是语句块内部的所有语句


主人不同的变量可以重名
全局变量,局部变量和块变量可以互相重名
如果一条语句属于多个重名变量的作用域则它选择使用
    作用域最小的那个变量


程序在运行的时候它的相关数据是分段落存储的
代码段          存储程序语句转换得到的数字
                在程序运行的时候这个段落里的
内容不可以被修改
全局段          生命周期是整个程序运行期间的
                存储区都被包含在这个段落里
                在整个程序允许期间这个段落
里所包含的存储区个数不会改变
栈              所有局部变量,块变量,形式
                参数和返回值的存储区都被包含
在这个段落里
                这个段落中所包含的存储区个数
随着程序的运行不断改变
                这个段落中对存储区的管理遵守
后进先出的原则
                每个函数开始工作的时候计算机会
为它开辟一个私有的区域
                当一个函数结束工作的时候计算机
会把分配给它的区域回收
堆              动态分配的存储区都被包含在这个
                段落里
                堆的大小几乎可以认为是无限的
                动态分配存储区的生命周期由程序员
决定
                当程序不再使用动态分配存储区的
时候必须明确把他们还给计算机


在声明变量的时候可以使用如下几个关键字
1.auto关键字用来声明自动变量
         所有局部变量都是自动变量,不需要特别
说明
2.static关键字用来声明静态变量
          静态变量的生命周期一定是整个程序运行
 期间
          没有初始化的静态变量也会自动被初始化
 成0
          不论静态变量的初始化语句写在什么地方
 它的初始化工作只在程序开始的时候执行
 一次
          静态全局变量的作用域只包含声明它的那个
 文件中所有语句


预习:
    1.声明变量时的关键字
2.指针变量


作业:
    1.编写函数把一个数组中所有存储区的内容前后
    颠倒,在主函数中把颠倒后的结果打印在屏幕上
(多种类型的数组都可以完成这个任务,
 尽量多试几种类型)













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值