《 C 语言的一些“骚操作”及其深层理解》之转义符\与字符串常量的连接

您所在的位置:网站首页 c语言编写电子词典 《 C 语言的一些“骚操作”及其深层理解》之转义符\与字符串常量的连接

《 C 语言的一些“骚操作”及其深层理解》之转义符\与字符串常量的连接

2023-07-07 11:33| 来源: 网络整理| 查看: 265

一、转义符\

C语言中要表达一个字节数据序列(内存中连续存储的若干个字节),我们可以使用字节数组,如unsigned char array[10]={0,1,2,3,4,5,6,7,8,9}。其实字符串,本质上也是一个字节序列,但是通常情况下它所存储的字节的值均为ASCII中可打印字符的码值,如’A’、’‘、’|’等。那在字符串中是否也可以出现其它的值呢?这样,我们就可以用字符串的形式来表达一个字节序列了。很多时候,它可能比字节数组要方便一些。字符串中的转义符就是用来干这个的。请看如下程序:

这两种写法,array所指向的内存字节序列是基本一样的(后者最后还有一个0)。当然,如果我们把array传到strlen去计算长度,返回的值为0。因为它第一个字节的值为0。但是我们仍然可以使用array[n]的方式去访问序列中的数据。

上面程序中的两种写法,是完成等价的。

字符串中的转义符的目的是为了在本应该只能看到ASCII可打印字符的序列中,可以表达其它数值或特殊字符。如经常使用的回车换行”\r\n”,其实质就是”\x0d\x0a”;通常我们所说的字符串结束符\0,其实就是0的八进制转义表达形式。

二、字符串常量的连接

在研读一些开源软件的源代码时,我见到了字符串常量的一个比较另类的用法,在这里介绍给大家。

有些时候,为了让字符串常量内容层次更加清晰,就可以把一个长字符串打散成若干个短字符串,它们顺序首尾相接,在意义上与长字符串是等价的。比如"0123456789ABCDEF"可以分解为”0123456789””ABCDEF”,即多个字符串常量可以直接连接,够成长字符串。这种写法,在printf打印调试信息的时候可能会更多用到。

在printf的格式化串很长的时候,我们把它合理的打散,分为多行,程序就会显得更多工整。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3