首先说明一下字符串的含义。
字符串就是一串字符,用双引号(double quote)引起来的一串字符(英文双引号)成为字符串面值(String Literal),或者简称字符串。
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串的长度时以 \0 作为结束标志,这个转义字符在计算字符串长度时不算进字符串长度。\0就是字符串的结束标志。
求字符串的长度 - strlen
在使用strlen时要注意引用头文件。
打印字符串 - %s
在上面打印字符数组arr2时就出现了打印出来有乱码的情况,这是什么原因导致的呢?
在打印字符数组arr1时,打印是从字符 'a' 开始的,打印完字符 'c' 后会碰到字符串结束标志 \0,这时打印就结束了。
而再打印字符数组arr2时,打印从字符 'a' 开始,在打印完字符 'c' 后并没有字符串结束标志,这时打印就会继续,因为数组都是存储在内存当中的,打印会一直向下进行,直到碰到字符串结束标志才会停止打印。
如果我们打印输出字符串arr2的字符串长度,那么结果如下:
意思就是在字符串一直向下打印,直到第43个字符串才碰到了字符串结束标志。这个字符数组的长度就是随机的,可能因电脑不同而有差异。
解决方法:
如果我们在字符数组arr2中手动加上 '\0' 字符,那么打印就会打印到第四个字符时就停止打印了。
并且这是字符数组arr2的长度为3。
虽然在求字符串长度时不会算上 '\0' ,但是在求数组中元素的个数时就会算进 '\0'了,这个需要注意一下。
这里在说明一下如何求字符数组中元素的个数:
我们可以使用语句
int sz = sizeof(arr) / sizeof(arr[0]);
来计算字符数组中元素的个数;原理就是先求出被定义数组所占空间的大小除以单个数组元素所占空间的大小。
数组中的元素必须都是同类型元素。