======变量 修饰词====================
一、变量 & 作用域
(1)局部变量:----> { }内 ----> 不赋值时,系统默认为随机数;
(2)全局变量:----> 整个应用程序 ----> 不赋值时,系统默认为0;
二、变量的存储类型//变量存储在哪里(内存、硬件寄存器)
【1】内存分为:栈区、堆区(程序员)、静态存储区
【2】根据存储类型,变量可分为:
自动变量:auto (局部变量—》存于栈区)
静态变量:static(可修饰内部函数(静态函数 ),与全局变量生命周期一样)
寄存器变量:register
三、静态变量
(1)它会保留上一次的值
(2)它的生命周期与应用程序绑定
(3)定义在函数内部 / 外部,不影响其生命周期
(4)存于静态存储区
(5)若写在函数外面,其他的函数也可以使用它;若写在函数里面,只能在对应函数中使用
静态变量 & 全局变量 & 静态全局变量
静态变量:static修饰的变量,若定义在函数体外,就是静态全局变量
全局变量:定义在函数体外,默认修饰词为extern
静态全局变量:static修饰的全局变量
共同点:生命周期一样,均与应用程序绑定
异同点:作用域不一样
静态变量若定义在{ }内,则其作用域在{ }内;若定义在函数体外(即静态全局变量),则其作用域在整个当前文件中。
全局变量作用域在整个应用程序,其他文件也可以调用和访问
四、寄存器变量
(1)register修饰的自动变量
(2)存于硬件寄存器(大小有限)中,访问效率 > 内存
(3)生命周期:{ } 中
(4)只限于int、char、float、double、指针类型的变量使用
五、extern、 static 与函数
外部函数:当前文件中定义,允许其它文件访问、调用———>extern修饰
内部函数:当前文件中定义,不允许其它文件访问、调用———>static修饰
内部函数被其他文件调用时,编译没有问题,链接时会出错
六、extern、 static 与变量
(1)extern声明一个已经定义过的变量,而非定义一个变量
(2)默认情况下,一个全局变量(外部)是可以供多个源文件共享的,
(即,多个源文件中,同名的全局变量都代表同一个变量)。
(3)static修饰的全局变量,只能用于当前文件
======结构体、枚举、typedef====================
一、结构体
结构体定义:
struct
结构体名称
{}
变量名;
注意:定义结构体结尾一定要加分号
// 结构体不能够对自身递归使用
结构体初始化方法:
方法一: struct Student jack = {10, "jack", 1.5, {2011, 5, 5}};
方法二: 分别设置各个属性的值
// jack.age = 10;
// jack.name = "jack";
// jack.height = 1.5;
-> 指针符号
注意:定义结构体结尾一定要加分号
// 结构体不能够对自身递归使用
结构体初始化方法:
方法一: struct Student jack = {10, "jack", 1.5, {2011, 5, 5}};
方法二: 分别设置各个属性的值
// jack.age = 10;
// jack.name = "jack";
// jack.height = 1.5;
-> 指针符号