代码之家  ›  专栏  ›  技术社区  ›  Todd Moses

字符数组和字符串有什么区别?

  •  16
  • Todd Moses  · 技术社区  · 16 年前

    我把时间花在高级语言上,突然想到我不知道char数组和字符串之间的区别。我想他们是一样的,但不确定。有什么区别吗?它只是一个带有一些抽象的char数组吗?

    10 回复  |  直到 7 年前
        1
  •  11
  •   Steven A. Lowe    16 年前

    字符数组只是一个字符数组

    字符串是使用字符数组的数据结构

    一些字符串表示使用空终止符(如C),另一些使用长度前缀

        2
  •  18
  •   Draemon    7 年前

    一串 抽象的,但是 序列 字符的它没有提到实现。如果您想基于字符的链接列表创建一个字符串实现,没有什么能阻止您。

    在C这样的语言中,几乎没有区别——只是C字符串是一个以空结尾的字符序列,位于连续地址,通常通过指针访问。

    在OOP语言中,字符串将是某个字符串类的对象。这可能在内部将数据保存在字符数组中,但您不需要知道这一点。字符数组只能是一个简单的数组,但如果实现者决定,字符串类可以对字符串提供许多操作(子字符串、regex等)。

        3
  •  7
  •   CesarGon    16 年前

    我以前教编程,这就是我用来解释这个特定问题的方法。

    首先,把注意力集中在这两件事上 常见的 :字符数组和字符串都由一系列字符组成。作为一个 序列 这意味着字符是有序的,并且可以枚举它们。

    现在关注这两件事中的每一件事,尤其是它们各自的特点。 不同的 方法,为了这个共同点。

    字符数组 添加已知要添加的任何数组:索引和对单个项的随机访问。

    一串 另一方面,增加了一个事实,即字符序列被视为一个具有自身属性的整体。在一些实现中,实现这意味着改变字符的存储方式(例如,在C字符串中添加一个终止的空值)。

    这种方法(先看看共性,然后看看事物与它们之间的差异)在各种情况下都被证明是有用的。

    希望这有帮助。

        4
  •  4
  •   Oded    16 年前

    在C语言中,这些几乎是相同的,尽管字符串的末尾会有一个额外的空字符。

    在其他语言(Java、C等)中,字符串是对象,而字符数组是…的数组。字符(原始数据类型)。

    通常,字符串是用字符数组实现的。

        5
  •  2
  •   ckramer    16 年前

    答案在某种程度上取决于你所说的语言。在.NET/C世界中,字符串是不可变的对象,而char数组可以很容易地在数组中添加/更改值。字符串可以以只读方式被视为字符数组,因为您可以迭代字符串中的字符。

    抽象地说,我认为最大的区别在于你想如何与他们合作。您是想使用文本块,比如向最终用户显示消息,还是希望查看一系列字符,在列表中进行一些处理?在某种程度上,这都是相当主观的。

        6
  •  0
  •   fastcodejava    16 年前

    String 是一个 class 在Java中。所以它有一些属性,例如 length . 所以当你要求字符串的大小时,它只是返回这个值,而不是每次都计算这个值。它还包括其他方法,例如 indexOf , substring 让生活变得轻松,这样你就不必自己去做了。

        7
  •  0
  •   cpx    16 年前

    C样式的字符串在内部由字符数组表示,结尾是'\0',表示字符串的结尾。

    在C++中,String .h中定义了一个String容器类,它提供了一些典型的字符串操作来操作字符串。

        8
  •  0
  •   T.E.D.    16 年前

    这取决于语言。在C-ish语言中,它们几乎是同序的。您可以声称不同之处在于“字符串”有一个隐式终止nul,但这将是分裂的头发。

    Fortran是另一个极端。这里的字符数组和字符串是完全不同的类型,它们可以使用不同的操作。

        9
  •  0
  •   harman    12 年前

    字符串是以空字符__ \0_

        10
  •  0
  •   Shivam Taneja    7 年前

    在C中,字符串是以空字符(\0)结尾的字符数组,但是

    在C++中,一个字符串是一个类,我们使用它的对象,并且在结尾没有空字符。 但字符数组的末尾包含空字符。

    此外,我们可以使用C++中的字符串对象运算符。

    推荐文章