zoukankan      html  css  js  c++  java
  • 为什么字符数组要以结尾

    一个数组能不能把数组元素大小作为一个元素放在数组的末尾

    如果是char类型数组

    char string[6]={'h','e',l',l','o',5};

    我觉得是可以的,但是如果这个数组元素比较长,而程序员不小心把有可能就把最后一个元素当作字符来输出了,这时候会影响到程序,所以直接数组大小作为数组最后一个元素这种方式是有隐患的。

    ‘’这个字符即作为一个字符不经常被用来当作实用的字符,而且就算被输出了也没有影响,因为是不可见的字符。

    所以可以换一种方式,把数组最后一个元素设置为‘’,然后把它当作一个标志,那么程序中只要检测这个字符就可以知道这个字符数组的大小了。

    其实char数组以结尾只是为了兼容strlen这种c标准库的函数的,为什么strlen要检测来判断字符串长度,可能是c标准就是这样吧,我觉得这个东西是历史遗留问题了,没办法改变的,除非标准变了。

    int类型数组,为什么就没有这回事情。

    如果把int类型数组大小作为数组最后一个元素是不行的,也存在那种把最后一个元素当作元素来输出的。

    如果像int类型那样的思路,把''作为数组结束的标志,不行,因为 在内存中是以0x00来存放的,而数字0 是一个常用的字符。

    最后就不了了之了,如果你真的需要在函数中用到数组的大小,那么直接把大小当作参数传递进去就可以了。

    因为c语言不是面向对象的,如果是面向对象的,那么一个string类型就可以直接用来存放字符串,然后设置一个属性专门用来存放字符串的大小即可,不用折腾这回事情。

  • 相关阅读:
    第一次作业
    冯娟的第五次作业
    冯娟的第三次作业
    冯娟的第四次作业
    冯娟的第二次作业
    数据压缩第一次作业
    第二次实验
    第三次实验
    第一次实验
    第五次作业
  • 原文地址:https://www.cnblogs.com/yfish/p/9840021.html
Copyright © 2011-2022 走看看