变量存储类型
目录:程序员成长之旅/C语言/笔记
通常我们使用的默认变量是aoto类型(动态),内存随着使用的过程自动释放例如:
int x=100; //默认是动态的类型
经过所学 得知还有很多其他类型的
C语言中存储类别又分为四类:自动(auto)、静态(static)、寄存器的(register)和外部的(extern)。
自动(auto):
刚刚说过 就是动态变量 若声明变量时没有说明变量类型默认就是auto
笔记:
动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数;自动变量;函数调用时的现场保护和返回地址等。
静态(static):
如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量。
静态局部变量属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放;静态局部变量在编译时赋初值,即只赋初值一次;如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。
简单来说就是动态变量会随着使用而自动释放, 而手动定义的静态变量不会随着程序的运行而自动释放 并且只能赋初始值一次
寄存器变量(register):
只有局部自动变量和形式参数可以作为寄存器变量;一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;局部静态变量不能定义为寄存器变量。
简单来说就是为了加快速度而存在的变量 直接放在CPU寄存器里面 当然比内存要快!
外部变量(extern):
简单来说就是调用当前函数外面的变量 可以被外部调用的函数
演示:
比较式演示
🖼 图片占位(归档模式)图片见原始导出:
%E5%8F%98%E9%87%8F%E5%AD%98%E5%82%A8%E7%B1%BB%E5%9E%8B.assets/12861009-ef84-472d-a6db-ceb45f02c09a.png🖼 图片占位(归档模式)图片见原始导出:
%E5%8F%98%E9%87%8F%E5%AD%98%E5%82%A8%E7%B1%BB%E5%9E%8B.assets/8fecc60f-d0b6-49be-9290-ae84afa7da47.png直接演示
🖼 图片占位(归档模式)图片见原始导出:
%E5%8F%98%E9%87%8F%E5%AD%98%E5%82%A8%E7%B1%BB%E5%9E%8B.assets/0.08856301717079873.png🖼 图片占位(归档模式)图片见原始导出:
%E5%8F%98%E9%87%8F%E5%AD%98%E5%82%A8%E7%B1%BB%E5%9E%8B.assets/0f2b6cc2-e314-42a5-ad03-d9bc3f2d2ac9.png