AdaMaYun 发表于 2025-2-22 22:39

C语言的局部与全局与变量存储类别

1、局部与全局C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。在复合语句中也可定义变量,其作用域只在复合语句范围内。 全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。

AdaMaYun 发表于 2025-2-22 22:39

2、变量存储类别mtianyan: C语言根据变量的生存周期来划分,可以分为静态存储方式和动态存储方式。静态存储方式:是指在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。 动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数;自动变量;函数调用时的现场保护和返回地址等。 C语言中存储类别又分为四类:
[*]自动(auto)、
[*]静态(static)、
[*]寄存器的(register)
[*]外部的(extern)。

szt1993 发表于 2025-2-24 16:20

全局变量全局都是可以适应使用的

AdaMaYun 发表于 2025-2-25 12:31

szt1993 发表于 2025-2-24 16:20
全局变量全局都是可以适应使用的

一般建议使用局部变量最好

suncat0504 发表于 2025-2-25 22:13

全局的变量尽量少用,尤其是涉及多个C文件的。容易弄乱了。

星辰大海不退缩 发表于 2025-2-26 16:29

C语言根据变量的生存周期来划分,可以分为静态存储方式和动态存储方式。

地瓜patch 发表于 2025-2-27 21:52

类别还有不同么

lix1yr 发表于 2025-4-10 14:09

在C语言中,变量的作用域和存储类别决定了变量的生命周期、可见性以及存储位置。

zhizia4f 发表于 2025-4-10 15:14

局部变量是在函数或代码块内部定义的变量。作用域仅限于定义它的函数或代码块。局部变量在函数或代码块执行时创建,在函数或代码块结束时销毁。并且局部变量通常存储在栈(Stack)中

q1ngt12 发表于 2025-4-10 16:19

其实全局变量是在所有函数外部定义的变量。

y1n9an 发表于 2025-4-10 17:28

一般全局变量主要的作用域从定义点开始,到文件结束。

su1yirg 发表于 2025-4-10 18:41

全局变量在程序启动时创建,在程序结束时销毁

tax2r6c 发表于 2025-4-10 21:13

我知道的是,全局变量通常存储在全局/静态存储区

l1uyn9b 发表于 2025-4-10 22:28

C语言提供了四种存储类别关键字,用于控制变量的存储位置和生命周期:auto默认的存储类别,用于局部变量。变量存储在栈中,生命周期与函数或代码块相同。

q1d0mnx 发表于 2025-4-11 09:14

还有static用于局部变量时,变量的生命周期延长到整个程序运行期间,但作用域不变。用于全局变量时,变量的作用域限制在当前文件内(文件作用域)。

w2nme1ai7 发表于 2025-4-11 11:56

register建议编译器将变量存储在寄存器中,以提高访问速度。不能取地址(因为寄存器没有内存地址)。

g0d5xs 发表于 2025-4-11 14:10

我觉得最常用的应该是extern吧,用于声明在其他文件中定义的全局变量。扩展全局变量的作用域到当前文件。

慢动作 发表于 2025-4-29 11:37

在 C 语言中,变量的存储类别与作用域密切相关,不同的存储类别决定了变量的生命周期、可见性以及如何在内存中分配。

键盘手没手 发表于 2025-4-30 22:48

局部变量是在函数内部或代码块(如 if 语句、循环语句)内定义的变量。

键盘手没手 发表于 2025-4-30 22:48

局部变量的作用域仅限于定义它的函数或代码块。离开这个作用域后,变量就不可再访问。
页: [1] 2
查看完整版本: C语言的局部与全局与变量存储类别