C语言之常量
常量
常量,常量表达式和const关键字修饰的只读变量都存储在.rodata只读数据段中
1.字面值常量 literal
- 整形字面值
123
,0xff00ff
- 字符常量,类型总是 int,
'a'
,'\n'
- 宽字符常量
L'x'
,L'中文'
- 枚举
enum WEEK {A=2, B, C}
, 实际上是整型 - 浮点
3.14
缺省为double类型 - 指针常量 pointer constant, 较少用到,不可改指向
- 字符串常量 string literal
“hello”
-
存储在字符数组中的,以NULL字节结尾的0个或多个的字符
-
在表达式中的值是字符串的地址而不是字符本身,因此可以赋值给字符指针
-
不能赋值给字符数组(仅仅支持初始化的特殊形式)
char *p = "hello"; // 字符指针指向字符串常量 char a[] = "hello"; // 字符数组初始化 // 等价于 char a[] = {'h', 'e', 'l', 'l', 'o', '\0'}
-
2.命名常量 Named constant
初始化:
- 声明显示初始化
- 作为函数形参隐式初始化
3.辨析
常量定义:const关键字 VS define宏定义
- 变量和简单的字符串替换
- constant并不能算是真正意义的常量,只是不可修改的变量,验证思路?
常量和指针
- 常量指针
int const *p = &a; // 指向常量的指针,const修饰(*p), 改向不改值
- 指针常量
int * const p = &a; // 指针类型的常量,const修饰p, 改值不改向
4.参考资料
- 《C和指针》
- 3.1 基本数据类型
- 3.4 常量
- 《嵌入式C语言的自我修养》
- 7.7 常量和变量
- 《C程序设计语言》
- 2.3 常量
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库