今天就主要从变量的生命周期、作用域、默认值、内存区域、链接属性来进行说明。
生命周期:指变量从被创建到销毁的时间段;从时间上体现变量的特性
作用域:就是变量发挥作用的区域(即变量的有效范围);从空间上体现变量的特性
默认值:就是系统在未初始化之前默认的值
内存区域:也就是变量的储存地方;大体上可分为全局(静态)变量区;栈(stack):堆(heap)
链接属性:是用来决定不同文件中出现的标识符;可以分为外部链接(external)、内部连接(internal)、空链接(none)
A、全局变量:定义在函数外部的变量
例:int g_a = 10;//全局变量
生命周期:程序开始建立,程序结束时销毁
作用域:从定义开始一直到本文件结束
默认值:0
内存区域:全局(静态)变量
链接属性:外部
B、静态变量(static):值可以变;只要用于修饰函数
生命周期:程序开始建立,程序结束时销毁
作用域:从定义开始一直到本文件结束
默认值:0
内存区域:全局(静态)变量
链接属性:内部
C、局部变量:定义在函数内部的变量,包括形参。
生命周期:进入函数时创建,退出函数时销毁
作用域:函数作用域(即在本函数内部有效)
默认值:随机值。(Debug模式下会崩溃)
内存区域:栈
链接属性:无
D、静态局部变量
生命周期:进入函数时创建(第一次),程序结束时销毁
作用域:函数作用域
默认值:0
内存区域:静态变量区
链接属性:无
在调用全局变量的时候,一般前边的加extern,是让编译器在遇到这个函数时,从其他文件中寻找这个函数,可以看做是一种声明。
若是想让一个函数不被其他文件调用,可以在前边加静态关键字static,这样,这个函数就不会被其他文件调用。