【变量】:c语言中开辟一定的内存空间用于存储数据。
如何去定义一个变量?(创建格式如下)
【存储类型 数据类型 变量名】例如:【auto int a 】auto表示存储类型,存储类型决定开辟空间在哪个内存区域。int表示数据类型 ,a表示变量命名。
存储类型:c语言中有4种,分别是auto、static、etxern、register(用来指定数据存放的区域在下图)
auto:修饰的变量存储在栈区,用来修饰局部变量
static:修饰的变量存储在静态区,用来修饰全局变量和局部变量,修饰局部变量的时候,延长了局部变量的生命周期,如果局部变量没有初始化,变量值为0,如果初始化了,且智能初始化一次,后续初始化不改变他第一初始化参与运算的的值,修饰全局变量的时候,延长生命周期,限制全局变量的作用域只能在本文件使用,否则会报错。
extern:修饰的变量存储在静态区,用来修饰全局变量,告诉编译器该变量在其他文件已经被定义过了,可以拿来使用。
register:修饰的变量存储在寄存器内,用来修饰局部变量
数据类型:int可以知道占用4个字节的内存大小,无论是哪一种数据类型,都占用一定的内存大小,其目的就是开辟一定的内存大小来放入数据。
变量名:a就表示这块内存空间的名字就是a。
变量从作用域来看分为全局变量和局部变量。
全局变量:定义在任何函数体内的变量
全局变量:定义在函数体外的变量
【初始化】:定义变量的时候对变量进行赋值。
int a=2;(初始化)
int b;(未初始化)
注意:局部变量在定义的时候如果未初始化,在32位的操作系统打印输出变量输出的值为一个随机数,64位操作系统因为系统优化打印输出变量会输出0。全局变量如果没有初始化,打印输出变量就会输出0.
C语言程序在编译后执行程序会开辟一段内存空间,如下图: