C语言单引号和双引号的区别

本文详细解析了编程中使用单引号与双引号的区别,包括它们的含义及在内存中占用的不同大小。单引号表示一个字符,其整数值对应于ASCII字符集中的位置;而双引号则表示字符串,会额外占据一个字节用于存储终止符。

1:含义不同:

用单引号实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。而一般我们的编译器采用的都是ASCII字符集。如's',实际在内存中存储的是115 (对应的ASCII值)

2: 大小不同

用单引号引起的一个字符大小就是一个字节

而用双引号引起的字符串大小是字符的总大小+1,因为用双引号引起的字符串会在字符串末尾添加一个二进制为0的字符‘\0‘

 

### C语言单引号双引号区别 在C语言里,单引号用于定义字符常量,而双引号则用来定义字符串常量。具体来说: - **字符常量**由一对单引号括起来的一个字符组成,例如 `'a'` 表示字符 a 的ASCII码值[^1]。 - **字符串常量**是由一对双引号包围的一系列字符构成,比如 `"hello"` 是一个包含五个字母加上终止符 `\0` 的数组形式存在内存中的数据结构[^3]。 对于给定的例子代码片段: ```c #include <stdio.h> int main() { char* p1 = 1; char* p2 = '1'; char* p3 = "1"; printf("%s, %s, %s\r\n", p1, p2, p3); return 0; } ``` 这段程序实际上包含了几个错误。按照标准语法,指针变量应该指向有效的地址空间而不是整数值;另外 `char *p2='1';` 这样的赋值也是非法的因为单个字符应当存储在一个单独的 `char` 类型而非指针类型的对象内[^2]。 正确的版本应该是像这样写法更合适一些: ```c #include <stdio.h> int main(void){ const char c = '1'; // 定义并初始化一个字符变量 const char str[] = "1"; // 定义并初始化一个字符串数组 printf("Character as integer value: %d\n", c); // 输出字符对应的 ASCII 数值 printf("String literal with one character plus null terminator: \"%s\"\n", str); return 0; } ``` 上述修正后的例子展示了如何正确定义打印字符以及字符串。当处理单一字符时应使用单引号来创建字符字面量,并将其赋予适当的数据类型(如 `char`)。而对于多于一个字符的情况,则需采用双引号形成字符串文字。 #### 关键差异总结 | 特征 | 字符 (single quote) | 字符串 (double quotes) | |--------------------|----------------------------|-----------------------------| | 使用场景 | 单独字符 | 多个连续字符 | | 存储大小 | 通常占用一字节 | 至少两个字节以上 | | 终止标志 | 不需要特殊标记 | 结束处自动附加 '\0' |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值