打印
[技术问答]

C语言的存储类型

[复制链接]
1308|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
louliana|  楼主 | 2025-2-25 18:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、auto类型
描述:auto是C语言中的默认存储类型,用于定义在寄存器上的变量。然而,实际上编译器并不保证所有的auto变量都会存储在寄存器中,这取决于具体的实现和硬件条件。
特点:auto变量在函数执行时分配空间,函数结束时释放空间。此外,auto类型的变量不能取地址,因为其存储位置可能不固定。
2、register类型
描述:register类型用于定义一个变量,使其存储在CPU的寄存器中,以提高访问速度。
特点:由于寄存器数量有限,register类型的变量不能过多使用。此外,register类型的变量同样不能取地址。
3、static类型
描述:static类型用于限定变量或函数的作用范围,使其只能在当前文件内使用。此外,static还可以用来延长变量的生命周期,使其在程序执行期间一直存在。
特点:static类型的变量在程序开始时分配空间,在程序结束时释放空间。对于函数来说,static修饰的函数只能在定义它的文件中被调用。
4、extern类型
描述:extern类型用于声明一个变量或函数是从其他文件中使用的。它告诉编译器,该变量或函数在程序的其他地方已经定义过了。
特点:extern类型的变量在链接阶段与其他文件中的同名变量进行匹配,以实现跨文件访问。
5、const类型
描述:const类型用于声明只读的变量。const修饰的变量在初始化后不能被修改。
特点:const修饰的局部变量存储在栈上,但其值不能被改变(尽管可以通过指针绕过这种限制,但这是不推荐的做法)。const修饰的全局变量存储在只读数据段(.ro段),在程序执行期间保持不变。

使用特权

评论回复
沙发
hhdhy| | 2025-4-2 12:07 | 只看该作者
存储类型?这不都是什么引用调用和静态说明的类型吗

使用特权

评论回复
板凳
ewyu| | 2025-4-2 13:19 | 只看该作者
Auto用的不多,但是extern用的可不少啊

使用特权

评论回复
地板
twinkhahale| | 2025-4-2 15:01 | 只看该作者
静态其实就是说明变量的一种状态吧

使用特权

评论回复
5
gra22ce| | 2025-4-2 16:08 | 只看该作者
我觉得register这个是不是很少会用到啊?

使用特权

评论回复
6
wamed| | 2025-4-2 18:33 | 只看该作者
如果没有显式指定存储类型,局部变量默认为 auto,全局变量默认为 extern

使用特权

评论回复
7
gongqijuns| | 2025-4-2 19:52 | 只看该作者
static 和 extern 可以用于控制变量或函数的作用域,避免命名冲突。

使用特权

评论回复
8
teaccch| | 2025-4-2 22:16 | 只看该作者
register 只是一个建议,编译器可能会忽略该关键字

使用特权

评论回复
9
canfeil| | 2025-4-3 09:17 | 只看该作者
auto一般都是用在哪儿?堆栈的栈中是么

使用特权

评论回复
10
星星点点didi| | 2025-4-3 10:29 | 只看该作者
其实熟练使用静态变量和外部引用应该就可以了

使用特权

评论回复
11
nqty| | 2025-4-3 12:22 | 只看该作者
C语言还是牛的,有很多方便的操作,其实用好确实很方便

使用特权

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

本版积分规则

41

主题

1427

帖子

1

粉丝