1. 字符串常量的概念
字符串常量是一个字符序列,且被括在双引号中(双引号称为定界符)。字符串常量可以包含零个或多个字符集中的字符,也可以包括任意转义字符。其中若出现双引号、反斜线或回车换行符等必须用其转义字符(\", \\, \n)表示。
例如,"123 C program","11.11%","123\nabc"等都是合法的字符串常量。
特别地,定界符中没有字符时,""称为空串。
2. 字符串的长度
字符串常量是由若干字符常量组成的,一个字符常量占一个字节的内存空间。字符串的长度为字符串的个数。字符串用转义字符'\0'作为字符串的结束标志,占用1个字节。对于字符串何时结束,系统以出现的第一个'\0'为界。
(1)字符串的长度:只统计第一个'\0'之前的有效字符个数。
例如:
"123\0abc\0"字符串长度为3。
(2)字符串在内存中所占的字节数:还要包含'\0'占用的一个字节。
例如:
"ba\n\0cde" 字符串长度为3,在内存中占4个字节。
3. 字符串常量和字符常量的区别
(1)字符常量由单引号括起来,字符串常量由双引号括起来。
(2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。
(3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在C语言中没有字符串变量。但是可以用一个字符数组来存放一个字符串常量。
(4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符串结束的标志――字符’\0’ (ASCII码为0)。
例如:字符串 "C program" 在内存中所占的字节数为10,存储如下图所示:
|