字符数组和字符串之间的区别

作者: Laura McKinney
创建日期: 1 四月 2021
更新日期: 5 可能 2024
Anonim
C语言入门:初识字符串与字符数组 | 老九零基础学编程系列之C语言#66 | 网易云课堂 U-Course
视频: C语言入门:初识字符串与字符数组 | 老九零基础学编程系列之C语言#66 | 网易云课堂 U-Course

内容


C ++都支持 字符数组和字符串,因为C ++在同时使用它们时具有很大的好处。但是,无法对字符数组进行操作提高了类字符串的发展。字符数组和字符串都包含字符序列。但是,字符数组和字符串之间的根本区别是不能使用标准运算符来操作“字符数组”,而可以使用标准运算符来操作“字符串”对象。让我们研究一下字符数组和字符串之间的其他区别。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表

比较基础字符数组
基本的字符数组是字符数据类型的变量的集合。字符串是类,字符串的变量是类“字符串”的对象。
句法char array_name;字符串string_name;
索引编制字符数组中的单个字符可以通过其在数组中的索引进行访问。在字符串中,可以通过函数“ string_name.charAt(index)”访问特定字符。
数据类型字符数组未定义数据类型。字符串定义了C ++中的数据类型。
经营者C ++中的运算符不能应用于字符数组。您可以在字符串上应用标准的C ++运算符。
边界数组边界很容易溢出。边界不会溢出。
访问快速访问。存取缓慢。


字符数组的定义

字符数组是“ char”数据类型的变量的集合;它可以是一维数组或二维数组。也称为“空终止字符串”。字符数组是存储在连续内存地址中的字符序列。在字符数组中,可以通过其索引访问特定字符。 “空字符”终止字符数组。


让我们以字符数组为例:

char name = {A,j,a,y, 0};或char name =“ Ajay”;

此处,“ char”是字符数据类型,“ name”是字符数组的变量名。我展示了两种初始化字符数组的方法。在第一种方法中,明确提到了null;在第二种方法中,编译器自动插入了null。

字符串的末尾始终是一个空字符。它是字符数组的终止字符。字符数组不是内置数据类型。我们通过声明来创建字符数组。您不能在字符数组上应用标准运算符。要对字符数组进行操作,有一些内置函数,例如(strlen(),strlwr(),strupr(),strcat())。由于标准运算符不能应用于字符数组,因此它们不能参与任何表达式。

也可以创建指向字符数组的字符指针。

让我们通过一个例子来理解它。

char s1 =“ Hello”; char s2 =“先生”; s1 = s1 + s2; //错误运算符不能应用s2 = s1; //错误字符指针char * s =“ Morning”;字符* p; p = s; //执行

在上面的示例中,我们声明了两个字符数组s1,s2和两个字符指针s和p。字符数组s1和s2已初始化,我们可以看到加法运算符(+)和赋值运算符都不适用于字符数组。但是可以将一个字符指针分配给另一个字符指针。

请记住,一旦字符数组被初始化,就不能再次初始化为另一组字符。与C ++中的字符串相比,对字符数组或以null结尾的字符串的访问速度更快。

字符串的定义

字符串不是C ++的内置数据类型。它是“字符串”类型的类对象。就像在C ++中一样,创建类就像创建“类型”一样。类“字符串”是C ++库的一部分。它整体上包含一组字符或字符数组。开发标准字符串类的背后有三个原因。

  • 第一 是“一致性”,则字符数组本身并不是数据类型。
  • 第二 是“方便”,您不能在字符数组上使用标准运算符。
  • 第三 如果是“安全”,则数组边界很容易超出。


让我们通过一个例子来理解字符串。

字符串s1; s1 =“ Hello”;字符串s2(“早安”);字符串s3 =“ Hennery”;字符串s4;

在上面的声明中,声明了四个字符串变量或对象(s1,s2,s3,s4)。在上面的声明中,我展示了初始化字符串的三种方法。声明字符串s1,然后分别初始化。字符串s2由“ String”类的构造函数初始化。字符串s3在声明为普通数据类型do时被初始化。我们可以将标准运算符应用于字符串变量。

s4 = s1; //将一个字符串对象分配给其他s4 = s1 + s2; //添加两个字符串并将结果存储在第三个字符串if(s3> s2)//比较两个字符串s5(s1);使用现有的字符串对象创建一个新的字符串对象

在上面的代码中,将各种运算符应用于字符串,并执行各种操作。第一条语句将一个字符串对象复制到另一个字符串对象。在第二个语句中,将两个字符串连接起来并存储在第三个字符串中。在第三条语句中,比较了两个字符串。在第四条语句中,使用已经存在的字符串对象创建一个新的字符串对象。

与字符数组或以null终止的字符串相比,访问字符串的速度较慢。

字符数组和字符串之间的主要区别

  1. 字符数组是字符数据类型的变量的集合。 String是实例化为声明字符串的类。
  2. 使用索引值可以访问字符数组中的字符。另一方面,如果要访问字符串中的特定字符,则可以通过函数字符串的s_name.charAt(index)进行访问。
  3. 由于数组同样不是数据类型,因此字符也不是数据类型。另一方面,作为类的String充当引用类型,因此可以说String是数据类型。
  4. 您不能在字符数组上应用任何运算符,而可以在String上应用运算符。
  5. 作为数组,字符数组具有固定的长度,其边界很容易越界。其中String没有任何边界。
  6. 数组元素存储在连续的内存位置中,因此比字符串变量访问速度更快。

结论:

无法对字符数组进行操作提高了标准字符串类的发展。