C语言中没有专门的字符串变量,如果要将一个字符串存放在变量中,必须使用字符数组,即用一个字符型数组来存放一个字符串,数组中每一个元素存放一个字符。
<1> 定义: char c[10]
字符型与整型互相通用,因此 int c[10] 也可以定义字符数组。但由于两种类型分配字节不同, 用整型来定义会浪费空间, 另外这样定义实际意义也不大, 只是为了说明其合法性。
<2> 初始化:
C语言中,将字符串作为字符数组来处理。一般我们用字符数组来存放字符串时,都要先确定一个足够大的数组,而实际并用不了那么多,而我们只关心其有效位,为测定字符串实际长度,C规定了一个"字符串结束标志",以字符 '\0' 代表。如果有一个字符串,其中第10个字符为'\0',则此字符串的有效字符为9个。也就是说,在遇到字符'\0'时,表示字符串结束,由它前面的字符组成字符串。
<3> 字符数组的输入输出
char c[]={"china"};
printf("%s", c);
如果一个字符数组中包含一个以上'\0',则遇第一个'\0'时输出就结束。
用scanf函数输入时, 遇到空格则认为一个字符串结束。试验如下:
#include <stdio.h>
int main()
{
}
运行结果:
================================
how are you↙
how are you
================================
#include <stdio.h>
int main()
{
}
运行结果:
================================
how are you?↙
how
================================
由第二个程序可知,实际并未将这12个字符加上'\0'送到数组str中,而是将空格前的字符"how"送到str中,将其视为字符串处理,在其后加上'\0' 。
★ C语言中数组名代表该数组的起始地址。