文章目录

  • 字符常量
    • 非打印字符
  • 字符串常量
    • 字符数组
    • 字符指针

字符常量

利用char声明

字符常量用于储存字母和其它字符,本质上储存的是整数(ASCII字符集)而不是字符。

#include<stdio.h>
int main()
{char a = 'd';//c语言中用单引号括起来的就是字符常量。char b = 0B01100100;//字符以数值形式储存。printf("%d\n%c", a, b);
}

运行结果:

100
d

注意的问题

C语言将字符常量视为int类型而非char类型。

char grade = 'B’ 本来’B’对应的数值66储存在32位的存储单元中,现在却可以储存在8位的存储单元中。利用字符常量的这种特性,可以定义一个字符常量 ’FATE’ ,即把4个独立的8位ASCII码储存在一个32位存储单元中。如果把这样的字符常量赋给char类型变量 grade ,只有最后8位有效。因此, grade 的值是 E.

非打印字符

一些代表行为的字符无法打印出来:退格,换行,终端响铃或者蜂鸣

两种方法表示这些字符

  • 使用ASCII码

警报符的ASCII为7 char cheep=7

  • 使用转义序列

char cheep = '\7’ 等价于 char cheep =’\a’

转义序列 含义
\a 警报(ANSIC)(不得改变活跃位置)
\b 退格
\f 换页(把活跃位置换到下一页开始处)
\n 换行(把活跃位置移到下一行开始处)
\r 回车(把活跃位置移到当前行开始处)
\t 水平制表符(把活跃位置移到下一个水平制表点)(vc++按照8个空格补齐)
\v 垂直制表符(把活跃位置移到下一个垂直制表点)
\and\ 反斜杠\
\and’(") 单引号(双引号)
\? 问号
\0oo 八进制值(每个o表示0~7中的一个数)
\xhh 十六进制值(每个h表示0~f中的一个数)

活跃位置:指显示设备中下一个字符将出现的位置,光标也就是活跃位置

注意问题:这些转义序列字符不一定在所有的显示设备上都起作用。例如,换页符和垂直制表符在PC屏幕上会生成奇怪的符号,光标并不会移动。只有将其输出到打印机上时才会产生前面描述的效果。

字符串常量

在C语言中,字符串有两种存储方式。

  • 字符数组存储
  • 字符指针存储

字符数组

一个字符在内存中只占一字节,而字符串本质上是多个字符组成的字符数组。

C语言规定,在每一个字符串常量的结尾,系统都会自动加一个字符 ’\0’ 作为该字符串的“结束标志符”,系统据此判断字符串是否结束。这里要特别强调一点: ’\0’ 是系统自动加上的,不是人为添加的。

’\0’ 它不会引起任何控制动作,也不是一个可以显示的字符。

比如字符串常量"CHINA",表面上看它只有5个字符,但实际上它在内存中占6字节,‘C’、‘H’、‘I’、‘N’、‘A’、’\0’ 各占一字节。如果要输出该字符串,’\0’ 不会输出。也就是说,虽然实际上总共有 6 个字符,’\0’ 也包括在其中,但输出时 ‘\0’ 不会输出。系统从第一个字符 ‘C’ 开始逐个输出字符,直到遇到 ‘\0’,则表示该字符串结束,停止输出。

#include<stdio.h>
int main()
{char arr1[] = "abcd";printf("%d\n",sizeof(arr1));printf("%d\n",sizeof("abcd"));
}

运行结果:

5
5

若结尾无\0

#include<stdio.h>
int main()
{arr1[2];arr2[2];arr1[0] = 'a';arr1[1] = '\0';arr2[0] = 'a';printf("%c\n%c", arr1, arr2);
}

运行结果

a
a烫烫烫烫烫蘟

字符指针

字符串常量是一个表达式,既然使表达式就会有值,字符串常量的值是该字符串第一个字母的首地址

同一个字符串常量,它们的值(地址)相同

#include<stdio.h>
int main()
{const char* p = "Hello";const char* q = "Hello";printf("%p\n%p", *p, *q);
}

运行结果

00000048
00000048

谢谢!

字符常量与字符串常量相关推荐

  1. c语言字符常量和字符串常量_C语言中的字符常量

    c语言字符常量和字符串常量 Any character (a single character) that is enclosed within the single quotes (like, 'A ...

  2. C语言字符常量、字符串常量、字符数组使用

    C语言中字符常量的定义.赋值.输入.输出格式如下: #include <stdio.h>int main(){char a;//定义字符常量 char b;char c='abc';//多 ...

  3. 汇编 整数常量 实数常量 字符常量 字符串常量 保留字 标识符 伪指令 指令 nop指令

    整数常量 [{ + | - }] digits { radix } 符号 含义 h 十六进制 q/o 八进制 d 十进制 b 二进制 r 编码实数 t 十进制(备用) y 二进制(备用) 24 ; 十 ...

  4. C语言 - 字符常量 字符串常量

    字符常量是由一对单撇号括起来的单个字符 字符串常量,顾名思义就是多个"字符"串在一起,字符串常量是用"双撇号"括起来的多个字符的序列 ****** 只要是&qu ...

  5. java字符常量括_Java常量 变量 数据类型

    常量分为两种: 1:字面值常量: A: 字符串常量,需要双引号括起来     "helloword" B:整数常量      10 C :小数常量      8.9 D:字符常量, ...

  6. 理解Java字符串常量池与intern()方法

    理解Java字符串常量池与intern()方法 阅读目录 Java内存区域 两种创建方式在内存中的区别 解释开头的例子 intern()方法 参考资料 String s1 = "Hello& ...

  7. java字符串常量池长度_Java String类相关知识梳理(含字符串常量池(String Pool)知识)...

    目录 1. String类是什么 1.1 定义 1.2 类结构 1.3 所在的包 2. String类的底层数据结构 3. 关于 intern() 方法(重点) 3.1 作用 3.2 字符串常量池(S ...

  8. C语言字符型常量和字符串常量的区别

    定界符 字符串常量这玩意是由双引号罩着的,这跟字符常量的定界符('')不一样 长度 字符型就单引号里面一个,字符串就不一样双引号里面可以为0也能为其他整数 储存要求 字符常量存储的是字符的ASCLL码 ...

  9. c语言定义一个字符型变量,C语言-字符与字符串常量及变量

    字符型数据 字符常量:用单引号括起来的一个字符例如:'a' 'A''$''!' 注:'a'与'A'是不同的字符常量 转义字符:①以一个'\'开头的字符序列 例如:'\n'换行 '\t'横向跳格(水平制 ...

  10. 字符型常量与字符串常量的深度解析

    字符常量是指用一对单引号括起来的一个字符.如'a','9','!'.一般作为整型数据来进行运算. 详解与比较: 字符常量:在C语言中一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个 ...

最新文章

  1. 电子工程师要学的课程有哪些?
  2. [C++程序设计]指针总结
  3. python算法与数据结构-二分查找算法
  4. java打印6个偶数_Java编写一个应用程序,打印所有偶数从2到100
  5. 谷歌相册_Google相册中的新存档功能是什么?
  6. 如此生猛的纪录片,背后是难以置信的故事!
  7. Careercup - Microsoft面试题 - 5752271719628800
  8. 谈谈linux内核原理,谈谈Linux内核驱动的coding style
  9. Linux 命令(78)—— rmdir 命令
  10. mips 系统桥_系统功能调用实现简单输入输出(mips)
  11. WEB前端基础-HTML CSS总结.xmind思维导图
  12. 3年才能驾驭新技术,不如试试这个低代码魔方
  13. 《打开量化交易的黑箱》读书笔记
  14. qt 设置按钮大小_QT使用教程(四)之初体验
  15. IntelliJ IDEA设置豆沙绿背景
  16. IceWarp邮件监控功能
  17. 前端培训教程JavaScript
  18. STM32F407ZGT6的串口通信
  19. 基于Cloudflare搭建属于自己的GitHub加速站,github下载无忧
  20. 测试数据科学家进行机器学习的40个问题

热门文章

  1. android 动画库
  2. python对称加密算法库_对称加密算法
  3. JAVA网络编程个人笔记 第五章 URL和URI
  4. MATLAB学习笔记————(MATLAB的矩阵及其操作②)
  5. ios 后台唤醒应用_iOS 前后台机制以及后台唤醒机制【个人学习】
  6. java mysql模糊查询_java实现的连接数据库及模糊查询功能示例
  7. ads design environment_ADS射频仿真软件培训材料.pdf
  8. 操作系统概念之OSAL
  9. 【ANSYS命令流】结构分析单元与材料模型
  10. c语言如何输出结构体数组,怎么才能把结构体里面的二维数组打印出来?