1  前言

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

2  全局 const 变量

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

const int GLOBAL_CONST = 10; // 全局常量

int main() {

// 全局 `const` 变量存储在静态存储区

// 在整个程序执行期间都存在

// 可以在任何地方访问

return 0;

}

3  局部 const 变量

如果 const 变量是在函数内部或代码块内部声明的,它将存储在栈(Stack)上。栈是一种后进先出(LIFO)的数据结构,用于存储局部变量、函数参数和函数调用的上下文信息。在函数调用时,栈会分配空间来存储局部变量,当函数返回时,栈上的数据会被自动释放。

int main() {

// 局部 `const` 变量存储在栈上

// 在函数调用时分配,在函数返回时释放

// 只在函数内部可见

const int LOCAL_CONST = 20;

return 0;

}

4  const 修饰的字符串常量

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

const char* const STR_CONST = "Hello"; // 字符串常量

int main() {

// `const` 修饰的字符串常量存储在常量存储区

// 在程序运行期间保持不变

// 可以在任何地方访问

return 0;

}

5  总结

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

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

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

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

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: