一、"\0"对字符串与字符数组的重要性
编辑
代码结果运行如下:
编辑
其中数组arr1 与数组arr3的打印结果正确,而arr2的打印结果出现了异常。这就是使用"\0"造成的差异。我们知道"\0"是字符串的结束标志,当遇到\0时字符串才算作结束。在计算字符串的长度时"\0"不算作字符串的内容。
本题中数组arr1为字符串其本身末尾隐藏着一个\0;而在数组arr3中由我手动添加了一个\0,使得代码能够在遇到\0时自动结束,而arr2数组由于没有\0,打印时计算机找不到尾,只能打印出一个随机值,当在内存中”偶遇“一个”\0“时它才停止。
二、strlen与sizeof有什么区别?
结论:事实上二者没有什么关联
总结如下:
1、strlen是一个包含在string.h的字符串库函数,用于求字符串长度(也只能对字符串求长度)。它计算的是”\0“之前的所有字符的个数。(不包括"\0")
2、sizeof是一个操作符,它计算变量、数组类型的大小,单位是字节byte.
编辑
结果如下:
编辑
注意:
虽然‘\0'在库函数中不算数,但它实际存在且占了空间。因而在计算所占空间sizeof时,必须把“\0”,
作为一个字符元素参与其中。
三、含转义字符、求字符串长度
引例:
如果要在屏幕上打印一个目录:c:\code\test.c
如果我们这样写代码
#include<stdio.h> int main() { printf(“c:\code\test.c\”); return 0; }
结果如下:
编辑
原因很简单:\t作为转义字符,表示“水平制表符”,不在是字面意义的表示
总结:
介绍了字符串与数组中最易出错的三个考点。