Märkide massiivi ja stringi erinevus

Autor: Laura McKinney
Loomise Kuupäev: 1 Aprill 2021
Värskenduse Kuupäev: 6 Mai 2024
Anonim
Märkide massiivi ja stringi erinevus - Tehnoloogia
Märkide massiivi ja stringi erinevus - Tehnoloogia

Sisu


C ++ toetab mõlemat, Märkide massiiv ja jada, kuna C ++-l on nende mõlema kasutamisel märkimisväärsed eelised. Kuid suutmatus tähemärgimassiivis töötada suurendab klassistringi arengut. Nii tähemärkide maatriks kui ka string sisaldavad tähemärkide jada. Tähemärgimassi ja stringi põhierinevus seisneb aga selles, et tähemärkide massiivi ei saa kasutada tavaliste operaatoritega, samas kui "stringi" objekte saab kasutada tavaliste operaatoritega. Uurime tähemärgi ja stringi muid erinevusi.

  1. Võrdlusdiagramm
  2. Definitsioon
  3. Peamised erinevused
  4. Järeldus

Võrdlusdiagramm

Võrdluse alusMärkide massiivKeel
PõhilineMärkimüür on muutujate kogum, tähemärkide andmetüüp.String on klass ja stringi muutujad on klassi "string" objekt.
Süntakschar massiiv_nimi;string string_name;
IndekseerimineMärkide massiivi üksikutele märkidele pääseb juurde selle massiivi indeksi järgi.Stringis pääseb konkreetsele tähemärgile funktsioon "string_name.charAt (register)".
AndmetüüpMärkide maatriks ei määratle andmetüüpi.String määratleb andmetüübi C ++ -s.
OperaatoridC ++ operaatoreid ei saa tähemärkides kasutada.Võite stringi jaoks kasutada standardset C ++ operaatorit.
PiirMassiivi piirid on kergesti ületatavad.Piire ei ületata.
JuurdepääsKiire juurdepääs.Aeglane ligipääs.


Märkide massiivi määratlus


Märkide maatriks on andmetüübi „char” muutujate kogum; see võib olla ühemõõtmeline massiiv või kahemõõtmeline massiiv. Seda nimetatakse ka null lõpetatud stringiks. Märkide massiiv on märkide jada, mis salvestatakse järjestikustesse mäluaadressidesse. Märgimassiivis pääseb konkreetsele tegelasele juurde selle indeks. “Null märk” lõpetab märkide massiivi.

Võtame näite tähemärkide massiivist: -

char nimi = {A, j, a, y, 0}; või char name = "Ajay";

Siin on “char” tähemärgiandme tüüp, “nimi” on tähemärkide massiivi muutuja nimi. Olin näidanud märkide massiivi lähtestamiseks kahte viisi. Esimeses meetodis mainitakse otseselt nulli ja teises meetodis lisab kompilaator automaatselt nulli.


Stringi lõpp on alati nullmärk; see on tähemärkide massiivi lõppev märk. Märgimassiiv pole sisseehitatud andmetüüp; loome tähemärgi massiivi selle kuulutades. Märgimassiivis ei saa standardset operaatorit rakendada. Märkimassiivis töötamiseks on mõned sisseehitatud funktsioonid, näiteks (strlen (), strlwr (), strupr (), strcat (). Kuna tavapäraseid operaatoreid ei saa tähemärkide jaoks rakendada, ei saa nad üheski avaldises osaleda.

Samuti saab luua tähemärgi massiivi osuti.

Mõistagem seda näitega.

char s1 = "Tere"; char s2 = "härra"; s1 = s1 + s2; // viga operaatoreid ei saa rakendada s2 = s1; // viga Märgi osuti char * s = "Hommik"; char * p; p = s; // täidab

Ülaltoodud näites deklareerisime kaks märkide massiivi s1, s2 ja kaks märgi osutust s ja p. Märkide maatriks s1 ja s2 on initsialiseeritud, näeme, et täiend masina (+) ega määramisoperaatori tähemärk massiiv ei tööta. Tähemärgi osuti saab määrata teisele märgi osutile.

Pidage meeles, et kui tähemärkide massiiv on vormindatud, ei saa seda teisele märgikomplektile uuesti lähtestada. Märkide massiivile või null-lõpetatud stringile on kiire juurdepääs, võrreldes stringiga C ++.

Keele määratlus

String ei ole sisseehitatud andmetüüp C ++. See on klassiobjekt tüüp "string". Nagu C ++ klassis, on klassi loomine täpselt nagu “tüübi” loomine. Klass “string” on osa C ++ teegist. See hoiab tähemärgikomplekti või tähemärkide massiivi tervikuna. Tavalise keelpilliklassi väljatöötamisel on kolm põhjust.

  • Esiteks on "järjepidevus", pole tähemärkide massiivid omaette andmetüübid.
  • Teiseks on "mugavus", te ei saa tähemärkides kasutada tavalisi operaatoreid.
  • Kolmas on "ohutus", massiivi piirid on kergesti ületatud.

Mõistagem stringe näitega.

nöör s1; s1 = "Tere"; string s2 ("Tere hommikust"); string s3 = "Hennery"; nöör s4;

Ülaltoodud deklaratsioonis deklareeritakse neli stringi muutujat või objekti (s1, s2, s3, s4). Ülaltoodud deklaratsioonis näitasin stringi lähtestamiseks kolme viisi. String s1 kuulutatakse välja ja lähtestatakse seejärel eraldi. Stringi s2 lähtestab klassi “String” konstruktor. String s3 lähtestatakse selle deklareerimise ajal nagu tavaline andmetüüp. Saame stringi muutujatele rakendada tavalist operaatorit.

s4 = s1; // ühe stringi objekti määramine teisele s4 = s1 + s2; // kahe stringi lisamine ja tulemuse salvestamine kolmandasse stringi, kui (s3> s2) // kahe stringi stringi s5 (s1) võrdlemist; uue stringiobjekti loomine olemasoleva stringiobjekti abil

Ülaltoodud koodis rakendatakse stringi mitmesuguseid operaatoreid ja teostatakse mitmesuguseid toiminguid. Esimene avaldus kopeerib ühe stringi objekti teisele stringi objektile. Teises avalduses ühendatakse kaks stringi ja need salvestatakse kolmandasse stringi. Kolmandas avalduses võrreldakse kahte stringi. Neljandas avalduses luuakse uus stringiobjekt, kasutades juba olemasolevat stringiobjekti.

Juurdepääs stringile on aeglane, võrreldes tähemärkide massiivi või null-lõpetatud stringiga.

Tähemärkide massiivi ja stringi peamised erinevused

  1. Märkide maatriks on muutujate kogum, mis on iseloomu andmetüübis. Keel on klass, mida värskendatakse keelte deklareerimiseks.
  2. Indeksiväärtuse abil saate tähemärgi juurde pääseda tähemärkide massiivist. Teisest küljest, kui soovite juurde pääseda stringi kindlale tähemärgile, pääsete sellele juurde funktsiooni string’s_name.charAt (register) abil.
  3. Kuna massiiv ei ole andmetüüp, pole ka märk ka andmetüüp. Teisest küljest, kuna string on klass kui võrdlustüüp, võib seega öelda, et string on andmetüüp.
  4. Märgimassiivis ei saa ühtegi operaatorit rakendada, samas kui stringi saate operaatoreid rakendada.
  5. Massiivi tähemärgiks olemisel on kindel pikkus ja selle piire saab hõlpsalt ületada. Kus Stringil pole piire.
  6. Massiivi elemendid salvestatakse külgnevas mälukohas, kuhu pääseb kiiremini kui stringi muutujaga.

Järeldus:

Märkide massiivis töötamise võimetus tõstis välja standardse stringiklassi.