打印
[其它产品/技术]

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

[复制链接]
217|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AdaMaYun|  楼主 | 2025-2-22 22:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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
全局变量全局都是可以适应使用的

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

使用特权

评论回复
5
suncat0504| | 2025-2-25 22:13 | 只看该作者
全局的变量尽量少用,尤其是涉及多个C文件的。容易弄乱了。

使用特权

评论回复
6
星辰大海不退缩| | 2025-2-26 16:29 | 只看该作者
C语言根据变量的生存周期来划分,可以分为静态存储方式和动态存储方式。

使用特权

评论回复
7
地瓜patch| | 2025-2-27 21:52 | 只看该作者
类别还有不同么

使用特权

评论回复
8
lix1yr| | 2025-4-10 14:09 | 只看该作者
在C语言中,变量的作用域和存储类别决定了变量的生命周期、可见性以及存储位置。

使用特权

评论回复
9
zhizia4f| | 2025-4-10 15:14 | 只看该作者
局部变量是在函数或代码块内部定义的变量。作用域仅限于定义它的函数或代码块。局部变量在函数或代码块执行时创建,在函数或代码块结束时销毁。并且局部变量通常存储在栈(Stack)中

使用特权

评论回复
10
q1ngt12| | 2025-4-10 16:19 | 只看该作者
其实全局变量是在所有函数外部定义的变量。

使用特权

评论回复
11
y1n9an| | 2025-4-10 17:28 | 只看该作者
一般全局变量主要的作用域从定义点开始,到文件结束。

使用特权

评论回复
12
su1yirg| | 2025-4-10 18:41 | 只看该作者
全局变量在程序启动时创建,在程序结束时销毁

使用特权

评论回复
13
tax2r6c| | 2025-4-10 21:13 | 只看该作者
我知道的是,全局变量通常存储在全局/静态存储区

使用特权

评论回复
14
l1uyn9b| | 2025-4-10 22:28 | 只看该作者
C语言提供了四种存储类别关键字,用于控制变量的存储位置和生命周期:auto默认的存储类别,用于局部变量。变量存储在栈中,生命周期与函数或代码块相同。

使用特权

评论回复
15
q1d0mnx| | 2025-4-11 09:14 | 只看该作者
还有static用于局部变量时,变量的生命周期延长到整个程序运行期间,但作用域不变。用于全局变量时,变量的作用域限制在当前文件内(文件作用域)。

使用特权

评论回复
16
w2nme1ai7| | 2025-4-11 11:56 | 只看该作者
register建议编译器将变量存储在寄存器中,以提高访问速度。不能取地址(因为寄存器没有内存地址)。

使用特权

评论回复
17
g0d5xs| | 2025-4-11 14:10 | 只看该作者
我觉得最常用的应该是extern吧,用于声明在其他文件中定义的全局变量。扩展全局变量的作用域到当前文件。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

284

主题

2206

帖子

6

粉丝