Simbolių masyvo ir stygų skirtumas

Autorius: Laura McKinney
Kūrybos Data: 1 Balandis 2021
Atnaujinimo Data: 6 Gegužė 2024
Anonim
47 - STRINGS or CHARACTER ARRAYS - C PROGRAMMING
Video.: 47 - STRINGS or CHARACTER ARRAYS - C PROGRAMMING

Turinys


„C ++“ palaiko abu, Simbolių masyvas ir eilutė, nes naudojant „C ++“ abu yra nemažas pranašumas. Tačiau nesugebėjimas valdyti simbolių masyvo sukelia klasės eilučių vystymąsi. Tiek simbolių masyve, tiek eilutėje yra ženklų seka. Tačiau esminis skirtumas tarp simbolių masyvo ir eilutės yra tas, kad „simbolių masyvo“ negalima valdyti naudojant įprastus operatorius, tuo tarpu „eilutės“ objektus galima valdyti naudojant standartinius operatorius. Išnagrinėsime kitus simbolių masyvo ir eilutės skirtumus.

  1. Palyginimo diagrama
  2. Apibrėžimas
  3. Pagrindiniai skirtumai
  4. Išvada

Palyginimo diagrama

Palyginimo pagrindasVeikėjų masyvasStygos
PagrindinisSimbolių masyvas - tai kintamųjų, simbolių duomenų tipo, rinkinys.Styga yra klasė, o eilutės kintamieji yra klasės „eilutė“ objektas.
Sintaksėchar masyvo_vardas;stygos string_name;
IndeksavimasAtskirą simbolių masyvo simbolį galima pasiekti pagal jo rodyklę masyve.Eilutėje konkretų simbolį galima pasiekti naudojant funkciją „string_name.charAt (index)“.
Duomenų tipasSimbolių masyvas neapibrėžia duomenų tipo.Eilutė apibrėžia duomenų tipą C ++.
Operatoriai„C ++“ operatoriai negali būti taikomi ženklų masyve.Ant eilutės galite naudoti standartinį C ++ operatorių.
RibaMasyvo ribos lengvai peržengiamos.Ribos nebus peržengtos.
PrieigaGreita prieiga.Lėtas priėjimas.


Simbolių masyvo apibrėžimas


Simbolių masyvas yra „char“ duomenų tipo kintamųjų rinkinys; tai gali būti vienmatis masyvas arba dvimatis masyvas. Ji taip pat vadinama „niekine pabaiga“. Simbolių masyvas yra simbolių seka, saugoma iš eilės einančiuose atminties adresuose. Simbolių masyve konkretų simbolį galima pasiekti pagal jo rodyklę. „Null simbolis“ nutraukia simbolių masyvą “.

Paimkime simbolių masyvo pavyzdį: -

char vardas = {A, j, a, y, 0}; arba char vardas = „Ajay“;

Čia „char“ yra simbolių duomenų tipas, „name“ yra kintamasis simbolių masyvo pavadinimas. Buvau parodęs du būdus, kaip inicijuoti simbolių masyvą. Taikant pirmąjį metodą, nulis yra aiškiai paminėtas, o antrajame - kompiliatorius automatiškai įveda nulį.

Stygos galas visada yra niekinis ženklas; tai yra galutinis simbolių masyvo pobūdis. Simbolių masyvas nėra įmontuotas duomenų tipas; mes sukuriame simbolių masyvą jį deklaruodami. Simbolių masyvui negalite pritaikyti standartinių operatorių. Norėdami valdyti simbolių masyvą, yra keletas integruotų funkcijų, tokių kaip (strlen (), strlwr (), strupr (), strcat (). Kadangi standartiniai operatoriai negali būti taikomi ženklų masyvui, jie negali dalyvauti jokioje išraiškai.


Taip pat galima sukurti simbolių žymiklį į simbolių masyvą.

Supraskime tai pavyzdžiu.

char s1 = „labas“; char s2 = "Pone"; s1 = s1 + s2; // klaidų operatoriams negalima pritaikyti s2 = s1; // klaida Charakterio rodyklė char * s = "Rytas"; char * p; p = s; // vykdo

Aukščiau pateiktame pavyzdyje mes buvome deklaravę du ženklų masyvus s1, s2 ir du ženklų rodykles s ir p. Simbolių masyvas s1 ir s2 yra inicializuotas, matome, kad nei papildymo operatorius (+), nei priskyrimo operatorius neveikia simbolių masyvo. Bet ženklų rodyklę galima priskirti kitam ženklų rodytuvui.

Atminkite, kai simbolių masyvas bus inicializuotas, jo negalima vėl inicijuoti į kitą simbolių rinkinį. Palyginti su C ++ eilute, greita prieiga prie simbolių masyvo arba nulio nutrauktos eilutės.

Stygos apibrėžimas

Eilutė nėra įmontuotas C ++ duomenų tipas. Tai klasės objektas, kurio tipas yra „styga“. Kaip ir C ++ klasėje, klasės sukūrimas yra toks pat kaip „tipo“ sukūrimas. Klasės „eilutė“ yra C ++ bibliotekos dalis. Jame yra simbolių rinkinys arba simbolių masyvas kaip visuma. Standartinės stygų klasės sukūrimą lemia trys priežastys.

  • Pirmas yra „nuoseklumas“, simbolių masyvai savaime nėra duomenų tipai.
  • Antra yra „patogumas“, simbolių masyve negalite naudoti standartinių operatorių.
  • Trečias yra „sauga“, masyvo ribos lengvai peržengiamos.

Supraskime stygas pavyzdžiu.

styga s1; s1 = "labas"; styga s2 („Labas rytas“); stygos s3 = "Hennery"; styga s4;

Aukščiau pateiktoje deklaracijoje deklaruojami keturi eilutės kintamieji arba objektai (s1, s2, s3, s4). Aukščiau pateiktoje deklaracijoje aš parodiau tris būdus, kaip inicijuoti eilutę. Eilutė s1 deklaruojama ir po to atskirai inicijuojama. S2 eilutę inicijuoja klasės „Stygas“ konstruktorius. Eilutė s3 yra inicializuojama jos deklaravimo metu, kaip tai daro įprastas duomenų tipas. Eilučių kintamiesiems galime pritaikyti standartinį operatorių.

s4 = s1; // vienos eilutės objekto priskyrimas kitam s4 ​​= s1 + s2; // pridedame dvi eilutes ir įrašome rezultatą į trečią eilutę, jei (s3> s2) // palygindami dvi stygų stygas s5 (s1); sukurti naują eilutės objektą naudojant esamą eilutės objektą

Aukščiau pateiktame kode eilutėje taikomi įvairūs operatoriai ir atliekamos įvairios operacijos. Pirmasis teiginys nukopijuoja vieną eilutės objektą į kitą eilutės objektą. Antrame sakinyje dvi eilutės sujungiamos ir saugomos trečiojoje eilutėje. Trečiajame sakinyje lyginamos dvi eilutės. Ketvirtame sakinyje sukuriamas naujas eilutės objektas, naudojant jau esamą eilutės objektą.

Prieiga prie eilutės yra lėta, palyginti su simbolių masyvu ar niekine baigta eilute.

Pagrindiniai simbolių masyvo ir stygų skirtumai

  1. Simbolių masyvas yra kintamųjų, kurie yra charakterio duomenų tipo, rinkinys. Stygos yra klasė, kuri akimirksniu paskelbiama stygomis.
  2. Naudodami rodyklės reikšmę, galite pasiekti ženklą iš simbolių masyvo. Kita vertus, jei norite pasiekti tam tikrą eilutės simbolį, galite jį pasiekti naudodami eilutės funkciją_s_name.charAt (rodyklė).
  3. Kadangi masyvas nėra duomenų tipas, simbolis taip pat nėra duomenų tipas. Kita vertus, todėl eilutė yra klasė, kaip atskaitos tipas, todėl galima sakyti, kad eilutė yra duomenų rūšis.
  4. Simbolių masyvui negalite pritaikyti jokių operatorių, tuo tarpu galite naudoti operatorius „String“.
  5. Būdamas masyvo simboliu, masyvas turi nustatytą ilgį ir jo ribas galima lengvai peržengti. Ten, kur stygos neturi jokių ribų.
  6. Masyvo elementai saugomi gretimoje atminties vietoje, taigi prie jo galima pasiekti greičiau nei eilutės kintamąjį.

Išvada:

Nesugebėjimas valdyti simbolių masyvo kėlė standartinių stygų klasės plėtrą.