【C语言】【const】不同情况下,const修饰的变量存储的位置

1  前言

        在C语言中,const 修饰的变量存储在适当的内存区域中,具体取决于变量的声明方式和作用域。

2  全局 const 变量

  1. 如果 const 变量是在全局作用域中声明的,它将存储在静态存储区(Static Storage Area)中。
  2. 静态存储区是在程序启动时分配的,该区域中的数据在整个程序执行期间都存在。
const int GLOBAL_CONST = 10; // 全局常量

int main() {
    // 全局 `const` 变量存储在静态存储区
    // 在整个程序执行期间都存在
    // 可以在任何地方访问
    return 0;
}

3  局部 const 变量

  1. 如果 const 变量是在函数内部或代码块内部声明的,它将存储在栈(Stack)上。
  2. 栈是一种后进先出(LIFO)的数据结构,用于存储局部变量、函数参数和函数调用的上下文信息。
  3. 在函数调用时,栈会分配空间来存储局部变量,当函数返回时,栈上的数据会被自动释放。
int main() {
    // 局部 `const` 变量存储在栈上
    // 在函数调用时分配,在函数返回时释放
    // 只在函数内部可见
    const int LOCAL_CONST = 20;
    return 0;
}

4  const 修饰的字符串常量

  1. 如果 const 用于修饰字符串常量,那么该字符串常量将存储在常量存储区(Constant Storage Area)。
  2. 常量存储区是用于存储常量字符串和全局常量的特殊内存区域,其中的数据在程序运行期间保持不变。
const char* const STR_CONST = "Hello"; // 字符串常量

int main() {
    // `const` 修饰的字符串常量存储在常量存储区
    // 在程序运行期间保持不变
    // 可以在任何地方访问
    return 0;
}

5  总结

        全局 const 变量 GLOBAL_CONST 存储在静态存储区,可以在程序的任何地方访问。

        局部 const 变量 LOCAL_CONST 存储在栈上,在函数调用时分配,在函数返回时释放。

  const 修饰的字符串常量 STR_CONST 存储在常量存储区,在程序运行期间保持不变。

        总之,const 修饰的变量可以存储在静态存储区、栈或常量存储区,具体取决于变量的声明位置和用途。

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值