Mis vahe on char-deklaratsioonil ja stringideklaratsioonil?


Vastus 1:

Char muutuja salvestab 8-bitise allkirjastatud täisarvu (mida võib tõlgendada ühe ASCII tähemärgi järjenumberina).

C-keelel puudub spetsiaalne stringi tüüp. String on lihtsalt lineaarne, pidev tähemärkide massiiv, mis lõpeb märgi '\ 0' (käsk kood 0) järgi. Tüübideklaratsioon on siis char []. Näit. söe [32]; kuulutab 32 tähemärgist koosneva massiivi ja [10] kasutab massiivi 11. tähemärki (!).

Nüüd käsitletakse massiivi C-s lihtsalt osutamise teel selle esiosale. Niisiis, kui teil on massiiv juba olemas, saate seda käsitleda mõne muu osuti kaudu. Näit. char * b = “Minu string”; kuulutab (ja määratleb) osuti b, mis osutab staatilisse andmemälusegmenti salvestatud stringi esimesele tähemärgile „M”. b + 1 loob osuti 2. tähemärgile ...



Vastus 2:

C-keeles pole stringi tüüpi (nagu näiteks C ++, Java), kuid C lubab kirjutada tähemärgi, millel on null tähemärk ('\ 0'). Põhimõtteliselt võib tähemärki kirjutada nagu 'a', 'b', 'c', 'd', '5', 'g' jne, ühekordse ümberpööratud komaga, kuid et C-s stringi kirjutada, tuleb see kirjutada kahekordse ümberpööratud komaga, mis on kõike muud kui massiiv selle märk lõppeva nullmärgiga '\ 0' Siin on mõned näited: „abcd” => string => tähemärkide massiiv => sama, mis see => {'a', 'b', 'c', 'd', '\ 0'} 'a' => tähemärk, kuid "a" on string, mis koosneb selliste märkide massiivist. {'A', '\ 0'} Madal tasemel on string ise tähemärkide massiiv ...



Vastus 3:

Märk tähendab mis tahes klaviatuuril kirjutatavat, näiteks kõiki tähestikke (koosneb kõigist inimkeele põhitähtedest), numbreid, erimärke (! @ # $% ^ & * + _-?), Tühikut jne. Ja string on tähemärkide massiiv ja võite öelda, et tähemärkide kogum, nagu midagi, on jutumärkides.

Näiteks,

"Kõik, mida soovite nendes jutumärkides panna, on string."

Kas nägite ülaltoodud tsiteeritud rasket lauset? See on string, mis sisaldab tähestikku, punkti (.) Ja selles sisalduvaid tühikuid,

siin on veel üks näide stringist,

"Ma armastan matemaatikat + - / * ()% #, kõik jutumärkides on stringid"

Nüüd tuleme nende vahet,

Kui deklareerite tähemärgi mis tahes programmeerimiskeeles, ütleme, et kasutame java (tähemärkide deklareerimisel sama süntaks C ++ ja C #), kirjutame süntaksi järgmiselt:

char c;
// siin “char” on andmetüüp tähe määratlemiseks ja c on märgimuutuja nimi

See sisaldab ainult 2 baiti tähemärgi javas salvestamiseks. Ja märgimuutuja võib niimoodi ühe jutumärgi piires salvestada ainult ühe märgi

char c; // deklaratsioon
c = '1' // lähtestamine

me ei saa seda niimoodi kirjutada

c = "2" // siin on viga kahekordse pakkumise asemel ühe pakkumise asemel
c = '123' // viga: rohkem kui ühte tähemärki ei saa märgimuutuja salvestamiseks kasutada

kuid string võib talletada rohkem kui 1 tähemärki

Keel str; // stringi deklaratsioon javas
str = "Tere, ma olen keel!" // okei
str = 'Tere, ma olen string ühe jutumärgi sees' // viga: kuna stringi ei saa sulgeda üksikute jutumärkidega

loodan, et see aitab teil eristada tähemärki ja stringi. :)