当我把时间花在高级语言上时,我突然意识到我不知道 Char 数组和 String 之间的区别。我认为它们是同一件事,但不确定。有区别吗?它只是一个带有一些抽象的字符数组吗?

有帮助吗?

解决方案

的字符阵列仅仅是字符数组

的字符串是使用字符的阵列

一些字符串表示用一个空终止子(如C),其他的使用一个长度前缀

其他提示

一个序列的

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

在如C语言,有非常小的差别是 - 只是一个C字符串是空终止系列在连续地址的字符,即一般是通过一个指针访问

在一个OOP语言,字符串将是一些String类的一个对象。这可能将持有的字符数组的内部数据,但你并不需要知道。的字符数组只能是一个简单的阵列,但是,如果实施者决定一个String类可以提供许多操作(子串,正则表达式,等等)上的字符串。

我曾经教过编程,这就是我用来解释这个特定问题的方式。

首先,关注两者都有什么 共同点:字符数组和字符串都由字符序列组成。成为一个 顺序 例如,意味着字符是有序的并且可以枚举它们。

现在重点关注这两件事各自添加的内容,特别是它们的内容 不同的 的方式,以达到这个共同点。

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

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

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

希望这可以帮助。

在这些C几乎相同,虽然串将具有端部的附加的空字符。

在其他语言(Java,C#等),一个字符串是一个对象,而一个字符数组是...字符(其是原始数据类型)的阵列。

通常,串与字符数组实现。

答案在一定程度上取决于什么语言你谈论。在.NET / C#世界字符串是不可变对象,而一个字符数组,你可以在阵列中轻松添加/更改值。字符串可以被视为字符数组在只读方式,因为你可以通过在字符串中的字符进行迭代。

在抽象我觉得最大的区别是在你想如何与他们合作。你想与文本块的工作,说来显示一个消息给最终用户,或者你在看的字符序列,在名单上做一些处理?这一切都相当主观的在一定的水平。

String是在Java中class。因此,它具有的属性如length。所以,当你问字符串的大小它就简单地返回,而不是每次计算的值。它还其它方法例如indexOfsubstring等,使生活更轻松,所以你不必自己做。

一个C风格串在内部被阵列与“\ 0”字符的结束,这indiciates字符串的末尾表示。

在C ++中,有其提供一些典型的字符串操作来操纵串string.h中所定义的字符串的容器类。

这取决于语言。在C-ISH语言,他们是几乎同义。你可以要求不同的是,“弦”有一个隐含的终止NUL,但是这将是鸡蛋里挑骨头。

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

的字符串是字符数组由空字符“\ 0”

终止

在C,一个字符串是由一个空字符结尾字符数组(\ 0),但

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top