字符常量是单引号括起的单个字符如'A',字符串字面量是双引号括起的字符序列如"ABC",二者存储方式与用途不同。

字符串字面量和字符常量在C++中看似相似,但本质完全不同,理解它们的区别对正确使用C++非常重要。
定义与基本形式
字符常量是用单引号括起来的单个字符,例如:'A'、'1'、"Hello"、""(空字符串)、"a"。它的类型是 const char[],即字符常量数组,并自动在末尾添加空字符 '\0' 作为结束标志。
存储与内存表现
字符常量直接存储为一个整数值(如 'A' 就是 65),可参与算术运算。
立即学习“C++免费学习笔记(深入)”;
字符串字面量存储在程序的静态存储区,是一个字符数组。比如 "Hi" 实际占3个字节:'H'、'i'、'\0'。
示例对比:
1、对ASP内核代码进行DLL封装,从而大大提高了用户的访问速度和安全性;2、采用后台生成HTML网页的格式,使程序访问速度得到进一步的提升;3、用户可发展下级会员并在下级购买商品时获得差额利润;4、全新模板选择功能;5、后台增加磁盘绑定功能;6、后台增加库存查询功能;7、后台增加财务统计功能;8、后台面值类型批量设定;9、后台财务曲线报表显示;10、完善订单功能;11、对所有传输的字符串进行安全
- 'A' → 类型 char,值 65
- "A" → 类型 const char[2],内容 {'A', '\0'}
使用场景与常见错误
函数参数要求匹配类型。例如:
cout << 'X'; // 输出单个字符 cout << "X"; // 输出字符串
虽然输出结果看起来一样,但底层处理不同。
常见错误:
- 把字符串字面量赋给 char 变量:char c = "a"; ❌(类型不匹配)
- 误以为 'abc' 是合法字符常量 ❌(单引号内只能有一个字符)
- 比较字符串用 ==:if ("hello" == "hello") 可能不成立,因比较的是地址
总结关键区别
- 符号不同:单引号 vs 双引号
- 类型不同:char vs const char[]
- 长度不同:字符常量长度为1,字符串至少为1(含 '\0')
- 用途不同:字符用于单个符号处理,字符串用于文本序列
基本上就这些。记住:'x' 是一个字符,"x" 是一个带结束符的字符数组。别混淆。








