Razlika između nizova znakova i niza

Autor: Laura McKinney
Datum Stvaranja: 1 Travanj 2021
Datum Ažuriranja: 4 Svibanj 2024
Anonim
String Literal vs String Object | Difference between String literal and String object (Java)
Video: String Literal vs String Object | Difference between String literal and String object (Java)

Sadržaj


C ++ podržava oboje, Niz znakova i niz, jer C ++ ima znatne koristi od upotrebe oba. Ali, nemogućnost rada na nizu znakova povećava razvoj klase. I niz znakova i niz sadrže niz znakova. No, temeljna razlika između nizova znakova i niza je ta što se "nizom znakova" ne može upravljati sa standardnim operaterima, dok se "string" objektima može upravljati sa standardnim operatorima. Proučimo ostale razlike između nizova znakova i niza.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. Zaključak

Usporedni grafikon

Osnove za usporedbuNiz znakovaNiz
Osnovni, temeljniNiz znakova je zbirka varijabli, tipa znakovnih podataka.String je klasa, a varijable string-a su predmet klase "string".
Sintaksachar array_name;string string_name;
indeksiranjePojedinačni znak u nizu znakova može pristupiti njegovom indeksu u polju.U nizu određenom znaku može se pristupiti pomoću funkcije "string_name.charAt (indeks)".
Tip podatakaZnak znakova ne definira vrstu podataka.Niz definira vrstu podataka u C ++.
operatoriOperatori u C ++ ne mogu se primijeniti na niz znakova.Na string možete primijeniti standardnog C ++ operatera.
GranicaGranice polja lako se prekoračuju.Granice se neće prekoračiti.
PristupBrzi pristup.Sporo pristupanje.


Definicija znakovnog niza


Niz znakova je zbirka varijabli tipa "char"; to može biti jednodimenzionalni niz ili dvodimenzionalni niz. Također se naziva i „null terminated string“. Niz znakova je niz znakova koji se pohranjuju na uzastopne memorijske adrese. U nizu znakova određenom karakteru može se pristupiti po njegovom indeksu. "Null znak" završava niz znakova ".

Uzmimo primjer niza znakova: -

naziv char = {A, j, a, y, 0}; ili char name = "Ajay";

Ovdje je "char" vrsta znakova, "naziv" je varijabilno ime niza znakova. Pokazala sam dva načina inicijalizacije niza znakova. U prvoj metodi se null izričito spominje, a u drugoj metodi prevoditelj automatski umetne null.

Kraj niza je uvijek null znak; to je krajnji znak nizova znakova. Znakovna niz nije ugrađeni tip podataka; stvaramo niz znakova deklarirajući ga. Ne možete primijeniti standardne operatore na nizu znakova. Za rad na nizu znakova postoje neke ugrađene funkcije kao što su (strlen (), strlwr (), strupr (), strcat ()). Kako se standardni operateri ne mogu primijeniti na niz znakova, oni ne mogu sudjelovati u bilo kojem izrazu.


Moguće je kreirati i pokazivač znakova na niz znakova.

Shvatimo to sa primjerom.

char s1 = "Pozdrav"; char s2 = "Gospodine"; s1 = s1 + s2; // operateri pogrešaka ne mogu se primijeniti s2 = s1; // pogreška Pokazivač znakova char * s = "Jutro"; char * p; p = s; // izvršava

U gornjem primjeru, deklarirali smo dva znakovna polja s1, s2 i dva znakovna polja s i p. Parametri nizova znakova s1 i s2 se inicijaliziraju, možemo vidjeti da ni operater za dodavanje (+) niti operater dodjele ne rade na znakovnoj matici. No, karakterni pokazivač može se dodijeliti drugom pokazivaču znakova.

Zapamtite kada se niz znakova inicijalizira, ne može se ponovo inicijalizirati u drugi skup znakova. Pristup nizu znakova ili nizu koji prestaje s nulom završen je brz u usporedbi sa nizom u C ++.

Definicija niza

Niz nije ugrađeni tip podataka C ++. Objekt klase tipa "string". Kao i kod C ++ stvaranje klase je baš poput stvaranja "vrste". Klasa "string" dio je C ++ knjižnice. Sadrži skup znakova ili nizova znakova u cjelini. Tri su razloga koja stoje iza razvoja standardne klase stringa.

  • Prvi je "dosljednost", nizovi znakova sami po sebi nisu tipovi podataka.
  • Drugi je "praktičnost", ne možete koristiti standardne operatore u nizu znakova.
  • treći je "sigurnost", granice polja lako se prekoračuju.

Razjasnimo nam nizove primjerom.

string s1; s1 = "Pozdrav"; string s2 ("Dobro jutro"); string s3 = "Hennery"; string s4;

U gornjoj deklaraciji su deklarirane četiri varijable niza ili objekti (s1, s2, s3, s4). U gornjoj deklaraciji prikazao sam tri načina inicijalizacije niza. Niz s1 je deklariran i zatim odvojeno inicijaliziran. Niz s2 inicijalizira konstruktor klase "String". Niz s3 se inicijalizira u vrijeme njegove deklaracije kao što to čini uobičajena vrsta podataka. Na varijable stringa možemo primijeniti standardnog operatora.

s4 = s1; // dodjeljivanje jednog niza objekta drugom s4 = s1 + s2; // dodavanje dva niza i spremanje rezultata u treći niz ako (s3> s2) // uspoređivanje dva niza niza s5 (s1); kreiranje novog niza objekta korištenjem postojećeg niza objekta

U gornjem kôdu na niz se primjenjuju različiti operateri i obavljaju se različite operacije. Prva izjava kopira jedan niz string objekta u drugi string. U drugoj se rečenici dva niza spajaju i pohranjuju u treći niz. U trećoj se izjavi uspoređuju dva niza. U četvrtoj je tvrdnji stvoren novi nizni objekt pomoću već postojećeg string-objekta.

Pristup nizu je spor u usporedbi s nizom znakova ili nizom koji prestaje s nulom.

Ključne razlike između nizova znakova i niza

  1. Znak znakova je zbirka varijabli koje su od karaktera tipa podataka. String je klasa koja je instancirana za proglašavanje struna.
  2. Pomoću indeksne vrijednosti možete pristupiti znaku iz niza znakova. S druge strane, ako želite pristupati određenom znaku u nizu, možete mu pristupiti putem funkcije_name.charAt (indeks) funkcionalnog niza.
  3. Kao što niz nije podatkovna vrsta slično, lik također nije vrsta podataka. S druge strane, String kao klasa djeluje kao referentni tip, stoga se može reći da je String vrsta podataka.
  4. Ne možete primijeniti nijednog operatora na nizu znakova, dok na String možete primijeniti operatore.
  5. Budući da niz znakova niza ima fiksnu duljinu i njegove se granice lako mogu premašiti. Tamo gdje String nema nikakve granice.
  6. Elementi matrice pohranjuju se u neprekidnu memorijsku lokaciju, stoga im se može pristupiti brže od varijable niza.

Zaključak:

Nemogućnost rada s nizom znakova povećala je razvoj standardne klase niza.