高级语言中的常量与变量深入解析
1. 复合数据类型常量
许多语言除了支持字符串常量外,还支持其他复合常量类型,如数组、结构体/记录和集合等。这些常量通常用于在程序执行前静态初始化变量。
1.1 C/C++ 中的数组常量
在 C/C++ 中,我们可以使用如下代码初始化一个数组:
static int arrayOfInts[8] = {1,2,3,4,5,6,7,8};
需要注意的是, arrayOfInts 本身不是常量,真正的数组常量是 {1,2,3,4,5,6,7,8} 。在可执行文件中,若 arrayOfInts 是静态对象,大多数 C 编译器会直接将这八个整数值覆盖到与 arrayOfInts 关联的地址上,不会额外消耗空间来存储常量数据。例如,GCC 为该变量生成的代码如下:
LC0: // LC0 是与 arrayOfInts 关联的内部标签
.long 1
.long 2
.long 3
.long 4
.long 5
.long 6
.long 7
.long 8
然而,如果初始化的变量不是静态分配的对象,情况就不同了。例如:
超级会员免费看
订阅专栏 解锁全文
943

被折叠的 条评论
为什么被折叠?



