什么是字符串?

如题所述

字符串在形式语言范畴中定义为一个字母表(有限字符集合)中的有限个字符的有序集合。
通常所说的字符串,除了这个基本含义以外,还包含了它的表示形式。
由于字符能在计算机中以一个整数表示,对于每个字符占用空间相同的情况下(等宽字符串),用能够存放表示字符的整数的连续空间来保存字符串,同时使用长度或结束标志符信息。按宽度分,常用窄字符串(字符为1个字节,编码通常为ANSI,可以通过约束字符的值等方式扩展为不定宽度的MBCS(多字节字符串),例如中文系统中常用的ANSI+GBK),以及宽字符串(最常用的宽字符编码是Unicode,因此一般是指Unicode字符串)。
C/C++中对于等宽字符串使用数组或字符指针指针来引用,字符串结尾处加上每一位全部为0的字符'\0'(数值上等于整数0)标识,这种表示形式称为C风格字符串(C-style string)。最常用的字符串是指C-style字符串中,字符用char储存的版本,即C-style窄字符串。对于宽字符串,C/C++标准规定用wchar_t表示这个字符(宽度和字节序取决于实现,例如Mac平台下的工具中是2字节,对应编码UTF-16BE;Windows平台下的通常是2字节,对应编码UTF-16LE;GCC支持的是4字节,对应UTF-32,能放下所有Unicode字符),wchar_t数组或wchar_t指针是对应的字符串表示形式。C++标准库中用char或wchar_t字符串封装为std::string和std::wstring类,也是常见的实现方式。此外,还有Pascal中起始保存长度的字符数组等形式;以及一些字符串库中专用于处理非等宽字符串(例如UTF-8编码)等的表示形式。这些数据结构通常也称为字符串。
最后,具体到类C语言的语法上,包含了被作为字符串的字符的编译期符号"",称为字符串字面量(内存布局和表示C-style窄字符串的char数组相同),也是通常所说的字符串。宽字符串字面量用L""表示(内存布局同表示C-style宽字符串的wchar_t数组)。而字符常量用''和L''引用对引的字符来表示。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-06
简单来说,十六进制的数的每一位,满十六则向前进一位,不满十六但是满十的话用英文字母表示(大小写都可以),看下面几个例子理解起来最快:
十六进制表示: 0 1 2 3 …… 8 9 A B C D E F 10 11 ……1A 1B 1C 1D 1E 1F 20 ……
等值的十进制表示: 0 1 2 3 …… 8 9 10 11 12 13 14 15 16 17 …… 26 27 28 29 30 31 32 ……

下面分析一下十进制的995为什么等于十六进制的3E3:
十进制995 = 9 * 10的平方 + 9 * 10 + 5
十六进制3E3 = 3 * 16的平方 + 14 * 16 + 3 = 995
明白了吧?把十进制里面的10的n次方全换成16的n次方,满十但没满十六的换成字母,就是十六进制了。