回顾:
1.文件操作函数
2.递归函数
作业:
1.费氏数列
2.最大公约数
3.游戏进度
可以使用某个变量名的所有语句的综合叫这个变量的作用域
全局变量声明在所有函数之外
全局变量的作用域是程序中的所有语句
全局变量被自动初始化为0
局部变量声明在某个函数内部
局部变量的作用域是声明它的函数内部的所有语句
块变量声明在某个语句块内部
块变量的作用域是语句块内部的所有语句
变量的生命周期指变量可以被使用的时间范围
全局变量的生命周期是整个程序运行期间
局部变量的生命周期是函数运行期间
块变量的生命周期是语句块的运行期间
auto关键字可以用来声明局部变量
所有局部变量都自动是auto类型
static关键字可以用来声明变量
static关键字可以把局部变量和块变量的生命周期延长到整个程序运行期间
static局部变量和块变量也会被初始化成0
static关键字也可以声明全局变量
static全局变量的作用域是声明它的那个文件内部的所有语句
static局部变量的初始化工作在程序开始运行的时候做
不同类型的变量可以重名
某一条语句使用的重名变量是距离它最近的变量
指针变量是用来记录地址数据的
指针变量包括很多类型,分别对应不同来源的地址数据
指针变量的声明如下
int *p_num;
NULL代表空地址(其实就是数字0)
任何指针变量中应该或者是有效地址或者是NULL
既没有记录有效地址也没有记录NULL的指针叫做野指针
指针变量前边加*可以表示对应的普通变量
同一条语句中声明多个同类型的指针变量时需要在每个变量名前面加*。
所有指针类型的变量都是同样大小的
指针类型之间可以任意转换
不同类型的指针变量之间赋值过程中地址数据不会发生改变,改变的是通过这个地址所能找到的数据以及它的使用方式。
void *也是一种指针类型
这种类型没有说明地址数据的来源
这种类型的指针用来表示普通变量之前要先进行强制类型转换
指针变量可以作为函数的形式参数使用
数组做形参本质上就是指针变量做形参
函数中如果修改了指针形参对调用函数没有影响
函数中如果通过指针形参修改了普通变量则对调用函数有影响
指针变量做形参同样可以实现数据的双向传递
指针变量可以作为函数的返回值使用
绝不可以把局部变量的地址作为返回值使用
指针变量支持如下的四则计算
指针 + 整数,指针 - 整数,指针 - 指针
计算结果不是数学计算结果,与指针的类型有关
.