第10章字符串 C语言是用一维字符数组来存储字符串
第10章 字符串 C语言是用一维字符数组来存储字符串
10.1用一个一维字符数组来存储字符串 字符串:一系列字符组成的字符系列。在C语言 中所有以双引号括起来的字符都以字符串方式存 储。如:” China”,“ I am a boy”,“a”,“A” ■C语言中以字符’\0作为字符串的结束标 志。’Ⅷ0是转义字符,称为空字符,其ASCH1 为0。’10作为标志要占用存储空间(1byte) 但不计入字符串的长度 ■C语言中字符串常量就是一个一维字符数组,所 以它给出的是该字符串的首地址
10.1 用一个一维字符数组来存储字符串 ◼ 字符串:一系列字符组成的字符系列。在C语言 中所有以双引号括起来的字符都以字符串方式存 储。如:”China”, “I am a boy.”, “a”, “A” ◼ C语言中以字符’\0’作为字符串的结束标 志。’\0’是转义字符,称为空字符,其ASCII码 为0。’\0’作为标志要占用存储空间(1byte), 但不计入字符串的长度。 ◼ C语言中字符串常量就是一个一维字符数组,所 以它给出的是该字符串的首地址
■例如: char str[101, "ps, str= hello!. ERROR/ st是一维数组名,其为地址常量,不能再次赋 值 ps= hello!: /OK/ ps是字符指针,将字符串常量”helo!"赋值给 ps实际上是将该字符串在内存的首地址赋值给 ps
◼ 例如: char str[10], *ps; str = “hello!”; /*ERROR*/ str是一维数组名,其为地址常量,不能再次赋 值。 ps = “hello!”; /*OK*/ ps是字符指针,将字符串常量”hello!”赋值给 ps实际上是将该字符串在内存的首地址赋值给 ps
10.1.1一维字符数组的初始化 ■用一般的给数组初始化的方法。如: char str[10]={s,t,r,,n,g,"!;10}; s t nlg! \0\o\o ■上述初始化方式等价于 char str[10]=('s,'t,r,, i,'n,,g,, !1 因为初值个数少于10,系统会自动对未赋值的 元素赋值“0
10.1.1 一维字符数组的初始化 ◼ 用一般的给数组初始化的方法。如: char str[10] = { ‘s’,’t’,’r’,’i’,’n’,’g’,’!’,’\0’ }; ◼ 上述初始化方式等价于 char str[10] = { ‘s’,’t’,’r’,’i’,’n’,’g’,’!’ }; 因为初值个数少于10,系统会自动对未赋值的 元素赋值 ‘\0’ s t r i n g ! \0 \0 \0
■初始化时也可以省略字符数组的大小,但此时 必须人为地在字符串末尾加‘0以作为字符 串结束标志。如: char str1]={C,"h,,"n,"a,"0} char str2[]={C’,h,","n,a'}; str的长度为5,占用6个字节的存储空间,有 字符串结束标志。str2占用5个字节的存储空间, 没有字符结束标志,系统不知道该字符串在哪 里终止
◼ 初始化时也可以省略字符数组的大小,但此时 必须人为地在字符串末尾加 ‘\0’ 以作为字符 串结束标志。如: char str1[ ] = { ‘C’, ‘h’, ‘i’, ‘n’, ‘a’, ‘\0’ }; char str2[ ] = { ‘C’, ‘h’, ‘i’, ‘n’, ‘a’ }; str1的长度为5,占用6个字节的存储空间,有 字符串结束标志。str2占用5个字节的存储空间, 没有字符结束标志,系统不知道该字符串在哪 里终止