C语言(7)

数组也可以作为形式参数使用
数组形式参数不在被调用函数里
真正的形式参数不是数组,而是一个可以作为数组使用的变量
数组形式参数里的存储区在函数调用开始之前就已经存在了,函数调用结束后依然存在
声明数组形式参数的时候可以省略数组里的存储区个数
使用数组形式参数的时候需要另外提供一个整数类型的形式参数表示数组里的存储区个数
使用数组形式参数可以实现双向数据传递,这种参数叫做输入输出参数
如果被调用函数写在下面编译器会猜测它的格式
编译器认为函数有一个整数类型的返回值,并且有任意多个不确定类型的形式参数
参数只能是整数类型或双精度浮点类型
这个猜测结果叫做函数的隐式声明
如果隐式声明和函数的真实格式不一致编译就会出错
函数大括号前面的部分可以单独写成一条语句,这种语句叫做函数声明语句
函数声明语句里可以省略形式参数名称
把函数声明语句写在文件开头叫函数的显式声明,这可以避免隐式声明
除了主函数以外的所有函数都应该进行显式声明

exit标准函数可以立刻结束程序的执行
为了使用这个标准函数需要包含stdih.h头文件
这个函数需要一个整数类型的参数,这个参数的作用和主函数返回值的作用类似
c语言里函数可以调用自己
这种函数叫递归函数

                 ...
              1    print()
             *** ************
          1      print()
         *** ****************
      1        print()
     *** ********************
             print()
     *************************

如果一个问题可以采用一种方法不停的分解并且分解后的问题一定比原来的问题简单就可以采用递归函数解决

递归函数编写步骤
1.编写语句解决后的每个小问题(假设递归函数已经可以使用)
2.在递归调用语句之前编写分支解决不可分解的情况(分支必须保证函数可以结束)

用循环解决问题的方法叫递推
用递归函数解决问题的方法递归

首先用最简单的参数测试递归函数的结果,然后把参数逐渐变得复杂继续测试
用这种方法可以搞清递归函数的实际执行效果

变量分为局部变量和全局变量
局部变量都声明在函数里面
全局变量声明在所有函数外边
不论局部变量还是全局变量都分为静态和非静态两种
声明静态变量的时候需要使用static关键字
变量
局部变量 全局变量
静态 非静态 静态 非静态
不同种类变量的使用范围不同
作用域是一种使用范围,它表示可以使用某个变量的所有语句
生命周期也是一种使用范围,它表示可以使用某个存储区的所有时间

非静态局部变量的作用域是函数内部的所有语句
非静态局部变量的生命周期是函数某一次执行的时间范围
在函数开始执行的时候计算机会为非静态局部变量分配存储区,在函数结束的时候计算机会把非静态局部变量的存储区收走
每当函数重新执行时非静态局部变量对应的存储区都会发生变化
只要函数结束后记录在非静态局部变量里的数字就找不到了

静态局部变量的作用域也是函数里面的所有语句
静态局部变量的生命周期是整个程序的执行时间
记录在静态局部变量里的数字只要程序没结束就一定可以找到

非静态全局变量的作用域包含程序里的所有语句
非静态全局变量的生命周期是整个程序的执行时间

非静态局部变量类似于别墅里的家具
静态局部变量类似于别墅下面的土地
静态全局变量类似于小区的道路
非静态全局变量类似于小区外的道路

静态变量和全局变量的初始化都是在程序开始的时候进行并且只做一次
如果静态变量或者全局变量没有初始化就会自动被初始化成0
全局变量和局部变量可以重命名,这个变量名称优先代表局部变量
如果局部变量和全局变量都能满足要求应该优先选择局部变量

发布了13 篇原创文章 · 获赞 16 · 访问量 187

猜你喜欢

转载自blog.csdn.net/qq_38750394/article/details/105113989
今日推荐