本文通过字符串来了解储存空间的方式以及”\0“的重要性
一.对正文的解读:代码图片创建了以字符串为主的”arr1“,”arr2“,但是”arr1“和”arr2“对字符串的储存方式不同,”arr2“是以数组的方式存储,然而在对”arr1“,”arr2“的结果进行输出时出现了不同的结果,可以看到”arr1“的输出结果”abcdef“,”arr2“的输出结果”abcdef烫烫烫烫烫烫烫烫烫烫烫交跌“
问题一:这是为什么???(后面进行解答)
二.对”arr1“和”arr2“的长度进行测量,这里需要用到新的函数”strlen()“,因为”strlen()“函数不属于c语言编译器的内部函数需要导入”#include < string.h>“在进行使用,进一步打印输出后的到结果,"arr1"的长度为”6“,”arr2“的字符长度是大于6的。
问题二:为什么会出现这种情况?是否与上面的原因有关?(后面解答)
问题解答:
首先:我们进入”监视模式“观察”arr1“和”arr2“,进入”监视模式的方法“第一步:ctrl+f10,第二步:点击”调试“>>”窗口“>>"监视">>"输入所要监视的名称"
我们通过监视窗口可以看见a>>0,b>>1.......f>>5,\0>>6,在这里为什么会出现"\0"?我们在”arr1“中看不到?先来解释一下”\0“,它的作用是”结束符“也就是字面意思结束字符的打印,它是隐藏在字符串的尾部的,来结束这一段字符的打印。
其次:我们再来看一看”监视模式“下“arr2”的结果,通过结果并和“arr1”进行对比可以发现在“arr2”中并没有“\0”
问题一解答:
由于arr1只会占用储存空间其中的一部分,看下图arr1在内存空间的结尾处有“\0”使得arr1在打印输出的时候遇到“\0”就会停止打印,打印结束。然而arr2由于在“f”后面没有“\0”打印就不会停止,一直到遇到后面出现“\0”的时候才会停止打印,所以打印出来的结果会比arr1要长而且后面打印出来的结果是未知的。
问题二解答:
由于一个字符对应一个长度,所以arr2的长度是会大于arr1的长度的
汇总:本文用图片,以及文字的方法,解读了储存空间以及“\0”,进一步介绍了一下“\0”在c语言代码中的重要性,感谢观看!