C语言之单引号和双引号

1.单引号和双引号

C语言中的单引号用来表示字符字面量

C语言中的双引号用来表示字符串字面量(指针)


小贴士

字符字面量被编译为对应的ASCII码

字符串字面量被编译为对应的内存地址

printf的第一个参数被当成字符串内存地址

内存的低地址空间不能再程序中随意的访问


小结

单引号括起来的单个字符代表整数(ASCII码)

双引号括起来的字符代表字符指针

C编译器接受字符和字符串的比较,无任何意义

C编译器允许字符串对字符变量赋值,只能得到错误


说明:

喝水不忘挖井人,相关内容均转自狄泰软件学院,唐老师相关讲述


### C语言单引号双引号的区别 在C语言编程环境中,单引号双引号用于定义不同类型的字符串或字符常量。具体来说: #### 单引号 `'` 的用途 单引号用来表示字符型数据,即字符常量。一个由单引号括起来的字符会被解释成其对应的ASCII码值或其他编码系统的整数值[^3]。 例如: ```c char ch = 'A'; ``` 这里 `ch` 存储的是字母 A 对应的 ASCII 值 65 而不是实际的文字“A”。 如果尝试打印这个变量,则会显示相应的字符而不是数字形式的ASCII码: ```c printf("%c", ch); // 输出: A ``` 当对字符执行算术运算时,实际上是对其内部存储的数值进行操作。比如 `'a' + 1` 将得到下一个字符 `'b'` 的ASCII码值[^2]。 #### 双引号 `"` 的用途 双引号则被用来创建字符串字面量,也就是一串连续的多个字符组成的数组,并自动在其末尾加上终止符 `\0` 来标记字符串结束位置。这意味着即使只包含一个字符,“X”也会占用两个字节的空间(假设使用8位字符),因为还需要额外的一字节来保存零结尾标志[^1]。 考虑下面的例子: ```c const char *str = "B"; ``` 这里的指针 `str` 指向了一个含有两个元素的字符数组:第一个是大写字母 B (ASCII 66),第二个是空字符 '\0'。 #### 错误示范与修正建议 给定代码片段存在一些错误之处: ```c #include <stdio.h> int main() { char* p1 = 1; char* p2 = '1'; char* p3 = "1"; printf("%s, %s, %s\n", p1, p2, p3); return 0; } ``` 上述程序试图将不同类型的数据赋值给指向字符 (`char`) 类型对象的指针,这可能导致未定义行为。更正后的版本如下所示: ```c #include <stdio.h> int main(void){ const char c1 = 1; // 整形转为字符 const char c2 = '1'; // 字符常量 const char str[] = "1"; // 字符串 printf("'%c', '%c', \"%s\"\n", c1, c2, str); return 0; } ``` 在这个例子中,`c1`, `c2` `str` 都能正确地传递给 `printf()` 函数并按照预期的方式输出。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joyce_JTR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值