字符数组:是指用来存放字符的数组,定义方式和引用方式和数组一样。
定义及其初始化:
char str [7] = {'h','e','l','l','o'};
//赋值后有
str[0] = 'h';str[1] = 'e';str[2] = 'l';str[3] = 'l';
str[4] = 'o';str[5] = '\0';str[6] = '\0';
char str[2][6] = {{'h','e','l','l','o'},{'w','o','r','l','d'}};
//赋值后有
str[0][0] = 'h';str[0][1] = 'e';str[0][2] = 'l';str[0][3] = 'l';str[0][4] = 'o';str[0][5] = '\0';
str[1][0] = 'w';str[1][1] = 'o';str[1][2] = 'r';str[1][3] = 'l';str[1][4] = 'd';str[1][5] = '\0';
若花括号里的字符个数大于数组长度,就会报错。
若花括号里的字符个数小于数组长度,其余的元素自动定为空字符“\0”;
字符串数组:字符串是用一个字符数组来存储的一串字符,但与数组不同,字符串在逻辑上是一段相关的文字内容。
而数组中的每一个元素都是独立的。字符串以“\0”作为结束符。
定义及其初始化:
char str[7] = "hello";
str[0] = 'h';str[1] = 'e';str[2] = 'l';
str[3] = 'l';str[4] = 'o';str[5] = '\0';
若花括号里的字符个数大于数组长度,就会报错。
若花括号里的字符个数小于数组长度,则最后一个字符添加“\0”作为字符串的结束标志(最多一个“\0”);
用字符串赋值可以省略花括号。
给一维数组赋初值时可以省略数组长度,给二维数组赋初值时可以省略第一维的长度。
用scanf输入的字符串中间不能有空格,否则字符串会结束只能输入空格之前的字符串。用gets可以读入有空格的字符串。
char str[15];
gets(string);
puts(string);
//输入数据
hello world
//输出数据
hello world
char str[] = {'H','e','l','l','o'};
char str1[] = "hello";
对于第一个,所占空间是5;
对于第二个,所占空间是6;(会自动添加一个'\0')
字符串数组不会自动添加 '\0'。
字符串会自动添加' \0'。