字符数组的定义和初始化
字符数组的定义和一般的数组一样,例如:
char s[10];
char s[3][10];
char s[10]={‘H’,’e’,’l’,’l’,’o’,’‘,’C’,’+’,’+’,’!’};/*定义时完全初始化*/
char s[]={‘H’,’e’,’l’,’l’,’o’,’‘,’C’,’+’,’+’,’!’};/*定义时省略长度的完全初始化*/
char s[10]={‘H’,’e’,’l’,’l’,’o’};/*不完全初始化,未赋值的元素系统自动赋予0值*/
char s[11]={“Hello C++!”); /*字符串形式的初始化*/
char s[11]=”HelloC++!”; /*省略花括号的字符串形式的初始化*/
用双引号进行的字符串形式初始化和普通字符数组不同的是,在串的尾部自动添加了一个结束符’\0’,其ASCII值为0。数组的长度为ll,如果为10,’\0’将不能存储,字符串将不能正确初始化,其结果将只是一个普通的字符数组。
以下形式也可以初始化一个字符串:
char s[11]={‘H’,’e’,’l’,’l’,’o’,’‘,’C’,’+’,’+’,’!’,’\0’};
有了结束符’\0’,在编译处理和对字符串操作的时候,可以以此作为串是否结束的标志,定义字符串的时候需要足够的空间能存储最后一个结束符,像以下定义则是错误的:
char s[10]=”Hello C++!”;
字符串的长度是不包含’\0’在内的有效字符个数,如果字符串包含多个’\0’,以最前面的为有效结束符。例如,假设有字符串:
char s[11]={‘H’,’e’,’l’,’l’,’o’,’\0‘,’C’,’+’,’+’,’!’,’\0’};
则字符串的有效长度为5,字符数组的长度仍然为11。
因此用字符串的方式对数组作初始化赋值,\0'是由C编译系统自动加上的。由于采用了’\0'标志,所以在用字符串赋初值时一般无须指定数组的长度,而由系统自行处理。
例如:
char s[ ]=”Hello C++!”;
字符数组和普通数组一样,也是通过下标引用。