Разлика между символен масив и низ

Автор: Laura McKinney
Дата На Създаване: 1 Април 2021
Дата На Актуализиране: 6 Може 2024
Anonim
iOS App Development with Swift by Dan Armendariz
Видео: iOS App Development with Swift by Dan Armendariz

Съдържание


C ++ поддържа и двете, Масив от символи и низ, тъй като C ++ има значителни ползи от използването на двете. Но неспособността да се работи с масив от символи повдига развитието на низ от класа. И двата символни масива и низ съдържат последователността от знаци. Но основната разлика между масив от символи и низ е, че "масивът от символи" не може да се управлява със стандартни оператори, докато обектите "низ" могат да се управляват със стандартни оператори. Нека да проучим другите разлики между символен масив и низ.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

Основа за сравнениеМасив от символиниз
ОсновенХарактерният масив е събиране на променливи, от типа на символни данни.String е клас, а променливите на низ са обект на клас "string".
Синтаксисchar array_name;string string_name;
ИндексиранетоИндивидуалният знак в символен масив може да бъде достъпен чрез неговия индекс в масива.В низ, конкретният символ може да бъде достъпен от функцията "string_name.charAt (индекс)".
Тип данниСимволният масив не дефинира тип данни.Низът определя тип данни в C ++.
ОператоритеОператорите в C ++ не могат да бъдат приложени към масив от символи.Можете да приложите стандартен C ++ оператор на низ.
границаГраниците на масива лесно се преодоляват.Границите няма да се надхвърлят.
достъпБърз достъп.Бавен достъп.


Определение на символен масив


Масив от символи е съвкупност от променливи от типа данни „char“; той може да бъде едномерен масив или двумерен масив. Нарича се още „нулев краен низ“. Масив от символи е последователност от символи, които се съхраняват в последователни адреси на паметта. В масив от символи, определен знак може да бъде достъпен чрез неговия индекс. "Нулев символ" прекратява символния масив ".

Да вземем пример от масив от символи: -

име на char = {A, j, a, y, 0}; или char name = "Аджай";

Тук "char" е тип символни данни, "name" е променливо име на символния масив. Бях показал два начина за инициализиране на символния масив. В първия метод изрично се споменава нулата, а във втория метод компилаторът автоматично вмъква нулата.

Краят на низа винаги е нулев символ; това е завършващият характер на символния масив. Символният масив не е вграден тип данни; създаваме масив от символи, като го декларираме. Не можете да прилагате стандартни оператори в масив от символи. За работа с символен масив има някои вградени функции като, (strlen (), strlwr (), strupr (), strcat ()). Тъй като стандартните оператори не могат да бъдат приложени към символен масив, те не могат да участват в израз.


Символният указател към символен масив също може да бъде създаден.

Нека го разберем с пример.

char s1 = "Здравей"; char s2 = "Сър"; s1 = s1 + s2; // операторите на грешки не могат да бъдат приложени s2 = s1; // грешка Показалец на символа char * s = "Утро"; char * p; р = S; // изпълнява

В горния пример бяхме декларирали два символни масива s1, s2 и два символни указателя s и p. Характерният масив s1 и s2 се инициализират, можем да видим, че нито операторът за добавяне (+), нито операторът за присвояване работи на символния масив. Но символен указател може да бъде присвоен на друг символен показалец.

Не забравяйте, че след като инициализираният масив от символи не може да бъде инициализиран отново с друг набор от символи. Достъпът до символен масив или нулев завършващ низ е бърз в сравнение със низ в C ++.

Дефиниция на String

Низът не е вграден тип данни на C ++. Това е клас обект от тип "string". Както в C ++, създаването на клас е точно като създаване на "тип". Класът „низ“ е част от библиотеката на C ++. Той съдържа набора от символи или символни масиви като цяло. Има три причини за развитието на стандартен низ клас.

  • първи е "последователност", символните масиви не са типове данни сами по себе си.
  • втори е „удобство“, не можете да използвате стандартни оператори в масив от символи.
  • трета е „безопасност“, границите на масива лесно се преодоляват.

Нека разберем низовете с пример.

низ s1; s1 = "Здравей"; string s2 ("Добро утро"); string s3 = "Hennery"; низ s4;

В горната декларация са декларирани четири низови променливи или обекти (s1, s2, s3, s4). В горната декларация бях показал три начина за инициализация на низа. Низът s1 се декларира и след това отделно се инициализира. Низът s2 се инициализира от конструктора на клас „String“. Низът s3 се инициализира в момента на декларирането му, както правят нормалните типове данни. Можем да приложим стандартния оператор към низовите променливи.

s4 = s1; // присвояване на един низ обект на друг s4 = s1 + s2; // добавяне на два низа и съхраняване на резултата в третия низ, ако (s3> s2) // сравняване на два низа струни s5 (s1); създаване на нов низов обект с помощта на съществуващ низ

В горния код се прилагат различни оператори на низ и се извършват различни операции. Първият оператор копира един низ обект в друг низ обект. Във второто изречение два низа са свързани и се съхраняват в трети низ. В третото изявление се сравняват два низа. В четвъртото изявление се създава нов низов обект, като се използва вече съществуващият низ.

Достъпът до низа е бавен в сравнение с символен масив или нулево прекратен низ.

Ключови разлики между масив от символи и низ

  1. Масивът от символи е съвкупност от променливи, които са от тип данни. String е клас, който е инстанциран за деклариране на низове.
  2. Използвайки стойността на индекса, можете да получите достъп до символ от масив от символи. От друга страна, ако искате да получите достъп до определен символ в низ, можете да получите достъп до него чрез име на функция_s_name.charAt (индекс) на функцията.
  3. Тъй като масивът не е тип данни, подобен символ също не е тип данни. От друга страна, ако String е клас действа като референтен тип, може да се каже, че String е тип данни.
  4. Не можете да приложите нито един оператор в символен масив, докато можете да приложите оператори на String.
  5. Като масив от масиви от масив има фиксирана дължина и неговите граници могат лесно да бъдат надхвърлени. Където струната няма граници.
  6. Елементите на масива се съхраняват в непрекъснато място на паметта, поради което достъпът им може да бъде по-бърз от променливата на низовете.

Заключение:

Невъзможността за работа с масив от символи повдигна разработването на стандартен низ клас.