会调用自己的函数叫递归函数
如果一个问题可以重复采用,同样的方法拆分,就可以使用递归函数解决这样的问题
递归函数编写原则
1.在函数中用语句描述出问题的拆分方法
2.在函数的开始部分使用分支把不可拆分的情况单独处理(处理完成后应该结束函数)
很多问题既可以采用循环方式解决也可以采用递归方式结束
采用循环方式解决这种问题的思路叫做递推
采用递归函数解决这种问题的思路叫做递归
变量有两个重要特征:生命周期和作用域
这两个特征决定变量在什么时候,什么地方可以使用
变量的作用域指可以使用变量名称的所有语句的总和
根据作用域把变量分成三组:全局变量,局部变量和块变量
声明在函数外边的变量叫全局变量
全局变量的作用域包含程序中的所有语句
没有初始化的全局变量自动被初始化为零
声明在函数内部的变量叫局部变量
局部变量的作用域之包含函数内部的所有语句
声明在语句块内部的变量叫块变量
块变量的作用域之包括语句块内部的语句
变量的生命周期描述了变量可以被使用的是时间范围
变量在程序执行过程中随时被创建出来又随时被销毁
全局变量,局部变量和块变量的生命周期也不一样
全局变量的生命周期是整个程序运行期间
局部变量的生命周期是函数的运行期间
形式参数的生命周期和局部变量一样
块变量生命周期是语句块的运行期间
不同类型的变量可以重名
重名变量的使用遵循就近原则
声明变量时可以使用如下关键字
1.auto 关键字用来声明自动变量,所有局部变量默认是自动变量
2.static 关键字用来声明静态变量,生命周期和作用域不匹配
生命周期仍然是整个程序运行期间,但是作用域被压缩
到声明它的文件中所有语句的总和
静态局部变量和块变量,生命周期拉长到整个程序运行期间作用域不变
没有初始化的静态变量被自动初始化成 0
静态变量的初始化工作只在程序开始运行的时候执行一次
3. const 关键字用来声明不可修改的变量(不可以对变量名进行赋值)
这种变量只能在初始化的时候赋值
4.volatile 关键字用来声明异变量
指针变量对应的存储位置用来记录地址数据
指针变量一定要配合另外一个普通变量使用
每种普通变量都有一种专门的指针变量对应
对指针的使用最终就是为了操作配对的普通变量
大多数指针变量会和不同普通变量配对
指针可以看做普通变量的某种身份