为什么字符数组要以\0结尾
一个数组能不能把数组元素大小作为一个元素放在数组的末尾
如果是char类型数组
char string[6]={'h','e',l',l','o',5};
我觉得是可以的,但是如果这个数组元素比较长,而程序员不小心把有可能就把最后一个元素当作字符来输出了,这时候会影响到程序,所以直接数组大小作为数组最后一个元素这种方式是有隐患的。
‘\0’这个字符即作为一个字符不经常被用来当作实用的字符,而且就算被输出了也没有影响,因为是不可见的字符。
所以可以换一种方式,把数组最后一个元素设置为‘\0’,然后把它当作一个标志,那么程序中只要检测这个字符就可以知道这个字符数组的大小了。
其实char数组以\0结尾只是为了兼容strlen这种c标准库的函数的,为什么strlen要检测\0来判断字符串长度,可能是c标准就是这样吧,我觉得这个东西是历史遗留问题了,没办法改变的,除非标准变了。
int类型数组,为什么就没有\0这回事情。
如果把int类型数组大小作为数组最后一个元素是不行的,也存在那种把最后一个元素当作元素来输出的。
如果像int类型那样的思路,把'\0'作为数组结束的标志,不行,因为\0 在内存中是以0x00来存放的,而数字0 是一个常用的字符。
最后就不了了之了,如果你真的需要在函数中用到数组的大小,那么直接把大小当作参数传递进去就可以了。
因为c语言不是面向对象的,如果是面向对象的,那么一个string类型就可以直接用来存放字符串,然后设置一个属性专门用来存放字符串的大小即可,不用折腾\0这回事情。