字符串
字符串是由数字、字母、下划线、空格等各种字符组成的一串字符,由一对英文半角状态下的双引号("")括起来,示例如下:
"abcd@#$ _32"
" "
以上内容为两个字符串,只是第二个字符串中的字符都是空格。需要注意的是,字符串在末尾都默认有一个‘0’作为结束符。
字符串在各种语言编程中都是非常重要的数据类型,但是C语言中并没有提供“字符串”这个特定类型,字符串的存储和处理都是通过字符数组实现的,存储字符串的字符数组必须以空字符‘\0’(空字符)结尾。当把一个字符串存入一个字符数组时,也把结束符‘\0’存入数组,因此该字符数组的长度是字符串实际字符数加1。
例如字符串"abcde",在数组中的存储形式如图1所示。
图1 “abcde”字符串在数组中的存储形式
字符串由字符数组进行存储,那么可以直接使用一个字符串常量来为一个字符数组赋值,示例代码如下:
char char_array[6] = {"hello"};
char char_array[] = {"hello"};
char char_array[] = "hello";
在定义数组时,数组的大小可以省略,让编译器自动确定长度,因此,上述三种初始化字符串的方式是等同的。双引号之间的“hello”是一个字符串常量,字符数组char_array在指定长度时之所以定义为6,是因为在字符串的末尾还有一个结束标志‘\0’,它的作用等同于下列代码:
char char_array[6] = {'h', 'e', 'l', 'l', 'o', '\0'};
使用字符串直接对字符数组进行初始化,则在输出字符数组的元素时,最后一个字符是‘\0’。
小提示:‘\0’字符
字符串其实就是一个以空字符‘\0’结尾的字符数组,在定义存储字符串的数组时,要手动在数组末尾加上‘\0’,或者直接使用字符串对数组进行初始化。
字符数组与整型数组不同,在输出时,可以通过%s格式化输出,直接输出数组名,例如,对上面定义的字符数组char_array,可以直接以下面的形式输出:
*printf("%s", char_array); //结果为hello*