const、static变量存放位置注意全局和局部变量的CONST,const全局有的编译器直接当立即数存在ROM中 您所在的位置:网站首页 jsp的代码段中声明的变量的生存周期是一个线程吗 const、static变量存放位置注意全局和局部变量的CONST,const全局有的编译器直接当立即数存在ROM中

const、static变量存放位置注意全局和局部变量的CONST,const全局有的编译器直接当立即数存在ROM中

2024-02-11 15:43| 来源: 网络整理| 查看: 265

const、static变量存放位置

知之可否 2016-03-29 09:58:05  16155  收藏 14

分类专栏: C/C++语法

我们将以下面的例子介绍const变量和static变量的存放位置:

static int val_a = 1 ; // 初始化的静态变量 int val_b = 2 ; // 全局变量 const int val_c = 3 ; // const 全局变量 static int val_d ; // 未初始化的静态变量 int val_e ; // 未初始化的全局变量 int main() { static int val_f = 5; // 初始化的局部静态变量 static int val_g; //未初始化局部静态变量 int val_h = 6; //初始化局部变量 int val_i; //未初始化局部变量 const int val_j = 7; //const局部变量 return 0; }

①static无论是全局变量还是局部变量都存储在全局/静态区域,在编译期就为其分配内存,在程序结束时释放,例如:val_a、val_d、val_h、val_i。

②const全局变量存储在只读数据段,编译期最初将其保存在符号表中,第一次使用时为其分配内存,在程序结束时释放,例如:val_c;const局部变量存储在栈中,代码块结束时释放,例如:val_j。

③全局变量存储在全局/静态区域,在编译期为其分配内存,在程序结束时释放,例如:val_b、val_e。

④局部变量存储在栈中,代码块结束时释放,例如:val_h、val_i。

注:当全局变量和静态局部变量未赋初值时,系统自动置为0。

https://blog.csdn.net/gao1440156051/article/details/51003295/

const修饰的变量的存储位置

想飞的IT猪 2019-01-17 15:13:39  6925  收藏 24 分类专栏: c C++ 版权 c语言中const全局变量存储在只读数据段,编译期最初将其保存在符号表中(const全局有的编译器直接当立即数存在ROM中),第一次使用时为其分配内存,在程序结束时释放。

而const局部变量(局部变量就是在函数中定义的一个const变量,)存储在栈中,代码块结束时释放。

在c语言中可以通过指针对const局部变量进行修改,而不可以对const全局变量进行修改。因为const全局变量是存储在只读数据段

而c++中,一个const不是必需创建内存空间,而在c中,一个const总是需要一块内存空间。

在c++中是否要为const全局变量分配内存空间,取决于这个const变量的用途,如果是充当着一个值替换(即就是将一个变量名替换为一个值),那么就不分配内存空间,不过当对这个const全局变量取地址或者使用extern时,会分配内存,存储在只读数据段。也是不能修改的。

c++中对于局部的const变量要区别对待:

对于基础数据类型,也就是const int a = 10这种,编译器会把它放到符号表中,不分配内存,当对其取地址时,会分配内存 对于基础数据类型,如果用一个变量初始化const变量,如果const int a = b,那么也是会给a分配内存 对于自定数据类型,比如类对象,那么也会分配内存。

c中const默认为外部连接,c++中const默认为内部连接.当c语言两个文件中都有const int a的时候,编译器会报重定义的错误。而在c++中,则不会,因为c++中的const默认是内部连接的。如果想让c++中的const具有外部连接,必须显示声明为: extern const int a = 10。

———————————————— 版权声明:本文为CSDN博主「想飞的IT猪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/woainilixuhao/article/details/86521357



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有