数组 s 中存放了字符串“happy”。
字符数组的初始化还可以使用字符串常量,上述初始化等价于:
static char s[6] = { “happy” };
或
static char s[6] = “happy”;
将字符串存入字符数组时,由于它有一个结束符’ \0 ',数组长度至少是字符串的有效长度+1。例如,字符串“happy”的有效长度为5,存储它的数组的长度至少应为6。
如果数组长度大于字符串的有效长度+1,则数组中除了存入的字符串,还有其他内容,即字符串只占用了数组的一部分。例如:
char str[90] = "happy“;
上述代码只对数组的前6个元素(str[0] ~ str[5])赋初值,其他元素的值不确定。但这并不会影响对字符串“happy”的处理,由于字符串遇‘ \0 ’结束,所以,数组中第一个’ \0 ’ 前面的所有字符和第一个’ \0 ’ 一起构成了字符串“happy”,也就是说,第一个‘ \0 ’之后的其他数组与该字符串无关。
字符串由有效字符和字符串结束符’ \0 '组成。
字符串的存储——赋值和输入
将字符串存入数组,除了上面介绍的初始化数组,还可以采用赋值和输入的方法。例如:
static char s[80];
s[0] = ‘a’;
s[1] = ‘\0’;
采用赋值的方法将字符串 “a” 存入数组s。它等价于:
static char s[80] = “a”;
区分 “a” 和 ‘a’,前者是字符串常量,包括 ‘a’ 和 ‘\0’ 两个字符,用一维字符数组存放;后者是字符常量,只有一个字符,可以赋给字符变量。
输入的情况有些特殊,由于字符串结束符 ‘\0’ 代表空操作,无法输入,因此,输入字符串时,需要事先设定一个输入结束符。一旦输入它,就表示字符串输入结束,并将输入结束符转换为字符串结束符 ‘\0’。例如:
#include<stdio.h>
//定义输出函数
void pin(char str[]);
int main(){
int i = 0;