读书笔记-只读变量与字面量常量的区别

在 C 语言中,使用 const 关键字修饰的变量定义语句,表示对于这些变量,我们无法在后续的程序中修改其对应或指针指向的值。因此,我们更倾向于称它们为“只读变量”,而非常量。

只读变量与字面量常量的一个最重要的不同点是,使用 const 修饰的只读变量不具有“常量表达式”的属性,因此无法用来表示定长数组大小,或使用在 case 语句中。常量表达式本身会在程序编译时被求值,而只读变量的值只能够在程序实际运行时才被得知。并且,编译器通常不会对只读变量进行内联处理,因此其求值不符合常量表达式的特征。

误用只读变量和常量会导致编译错误,下面这段代码展示了这类错误:

 

复制代码
 1 #include <stdio.h>
 2 int main(void) {
 3   const int vx = 10;
 4   const int vy = 10;
 5   int arr[vx] = {1, 2, 3};  // [错误1] 使用非常量表达式定义定长数组;
 6   switch(vy) {
 7     case vx: {  // [错误2] 非常量表达式应用于 case 语句;
 8       printf("Value matched!");
 9       break;
10     }
11   }
12 }
复制代码

 

posted @   Ben002  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示