引号表示的意义

1.C语言中的单引号用来表示字符字面量
2.C语言中的双引号用来表示字符串字面量

‘a’表示字符字面量,在内存中占1个字节,‘a’+1表示’a’的ASCII码加1,结果为’b’

"a"表示字符串字面量,在内存中占2个字节,“a”+1表示指针运算,结果指向"a"结束符\0’

实例分析一下:

#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;}

运行结果如下,两个警告,发生段错误。

分析前讲几个知识点:
(1)字符字面量被编译为对应的ASCII码
(2)字符串字面量被编译为对应的内存地址
(3)printf的第一个参数被当成字符串内存地址
(4)内存的低地址空间不能在程序中随意访问


给p1指针的初始值是1,然后这个1被当成了一个地址,p1指向了地址为为0x01的内存空间。
同理,p2指针的初始值是字符字面量’1’,十进制的49,ASCII码的0x31,所以指向了地址为0x31的内存空间。这两个指针,p1和p2处于内存的低地址范围。
在我们的程序中,内存地址低于0x08048000的地址是不能访问的,一旦访问就会产生段错误,字符串被编译后的地址,都是大于0x08048000这个地址的,大于这个地址的内存空间是可以访问的。

还有一个就是printf,我们都是使用""双引号括起来的,如果使用单引号,同样会引起段错误,’\n’的ASCII码地址为0x10,低地址空间。

再来分析一个

char c = "string";

这句代码发生了什么?
编译后,将string的内存地址给了变量c,但是内存地址大小为四个字节,而char c 只有一个字节,由于类型不同,发生了截断。
tips:要专业,把警告当错误处理。

小结

(1)单引号括起来的单个字符代表整数
(2)双引号括起来的字符代表字符指针
(3)C编译器接受字符和字符串的比较,无任何意义
(4)编译器允许字符串对字符变量赋值,只能得到错误

C语言单引号和双引号相关推荐

  1. c语言字母加单引号和不加,C语言单引号和双引号的区别

    C语言单引号和双引号的区别 导语:C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.下面我们来看看C语言单引号和双引号的`区别 ...

  2. Arduino语言单引号和双引号区别

    Serial.println("Activated");输出   b'Activated\r\n' Serial.println('Activated');输出   b'25956 ...

  3. 去掉字符串中的单引号和双引号_同时搞定Android和iOS的Dart语言(4):字符串类型...

    在Dart语言中,用String表示字符串类型,可以用单引号或双引号表示字符串的值,例如,下面声明String类型变量的代码都是正确的. String s1 = 'hello world';Strin ...

  4. 读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号

    单引号与双引号 我们知道双引号引起来的都是字符串常量,单引号引起来的都是字符常量. 比如:'a'和"a"完全不一样,在内存里前者占1个byte,后者占2个byte. 1,'1',& ...

  5. c字符串中包含双引号_必须知道的C语言知识细节:单引号和双引号正确用法

    C语言中ACSII码字符单引号'和双引号"在程序中经常出现,很简单,但却是十分重要的语法标点符号,初学者容易混淆使用. 单引号在字符常量时使用,表示单个字符. 例如: char c; c = ...

  6. c语言中常量单双引号,C语言常量中字元与字串 除了单引号与双引号的区别外,还有什么不同。...

    C语言常量中字元与字串 除了单引号与双引号的区别外,还有什么不同.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言 ...

  7. php语言中双引号的作用是什么,php中的单引号与双引号作用详解

    一.引号定义字符串 在Php中,通常一个字符串被定义在一对引号中,如: 'I am a string in single quotes' "I am a string in double q ...

  8. 【C语言进阶剖析】14.C语言中的单引号和双引号

    文章目录 一.单引号和双引号 二.小贴士 三.程序实例分析1 四.程序实例分析2 五.容易混淆的代码 六.小结 一.单引号和双引号 C语言中的单引号用来表示字符字面量 C语言中的双引号用来表示字符串字 ...

  9. C语言双引号A单引号A,C语言查漏补缺——单引号和双引号

    一直对于单引号和双引号有些混淆,本节讨论一下单引号和双引号的问题. ide 1.基本知识spa 一.C语言中单引号用来表示字符字面量 指针 二.C语言中双引号用来表示字符串字面量 blog 好比:'a ...

最新文章

  1. 五分钟没有操作自动退出_这又是什么骚操作??5只蚂蚁战略配售基金拟增设B类份额,自动赎回退出!!...
  2. 基于verilog按键消抖设计
  3. java学习笔记十一——对象转型
  4. [C++11]独占的智能指针unique_ptr的初始化和使用
  5. Android入门简书,android ndk开发入门随笔(一)
  6. 深入理解字符编码(ASCII、Unicode、UTF-8、UTF-16、UTF-32)
  7. myan回复几个问题
  8. 支付功能如何软件测试
  9. JAVA大数据-Week4-DAY3
  10. 安装php项目后图片路径不对,解决织梦CMS栏目绑定二级域名后图片不显示,路径错误办法...
  11. js高级学习笔记(b站尚硅谷)-7-函数中的this
  12. SOA 普元EOS 工作流开发
  13. Cisco 防火墙 ASA DHCP 配置
  14. Linux 文件同步工具——rsync
  15. 7-12 分解质因数 (10分)
  16. 计算机房摆放布局,数据中心机房位置及设备布置的几点要求
  17. 每个程序员书柜必有的编程书籍
  18. 想做web开发 就学JavaScript
  19. 添加fiddler证书到手机根目录
  20. Dilate Gated Convolutional Neural Network

热门文章

  1. 针对 store_name 字段
  2. python爬虫之使用BeautifulSoup模块抓取500彩票网竞彩足球赛果及赔率
  3. python向json文件写入中文信息
  4. 人造地球卫星轨道外推Matlab,一种适用于圆轨道卫星的星上自主轨道外推方法
  5. 实验二+001+陈定国
  6. 隐私计算加密技术基础系列(上)
  7. agc38C LCMs
  8. ZHA_123的自我介绍
  9. BZOJ 1707 [Usaco2007 Nov]tanning分配防晒霜
  10. MySQL 字符集utf8、utf8mb3、utf8mb4