Ero strlen():n ja sizeof():n välillä C-merkkijonolle
Mikä on strlen()
strlen() on funktio, joka määrittää merkkijonon pituuden. Se laskee merkkijonossa esitetyt merkit yhteensä eliminoiden nollamerkin. Merkkijonon merkkien kokonaismäärä sisältää aakkoset, erikoismerkit ja numerot, joissa on välilyöntejä.
Mikä on sizeof()
sizeof() on funktio, jota käytetään laskemaan sen operandin koko. Se palauttaa tietyn muuttujan koon. Tätä funktiota voidaan soveltaa mihin tahansa tietotyyppiin, jotka sisältävät primitiivisiä tyyppejä, kuten kokonaisluku ja osoitintyypit, liukulukutyypit, rakenne tai liitto. sizeof():n sisältävän ohjelman tulos voi olla erilainen 32-bittisessä ja 64-bittisessä järjestelmässä.
AVAINEROT
- Strlen-menetelmää käytetään taulukon pituuden selvittämiseen, kun taas sizeof()-menetelmää käytetään tietojen todellisen koon löytämiseen.
- Strlen() laskee merkkien lukumäärän merkkijonossa, kun taas sizeof() palauttaa operandin koon.
- Strlen() etsii muuttujan nolla-arvoa, mutta sizeof() ei välitä muuttujan arvosta.
- Palautusarvo strlen():ssä on pitkä int, toisaalta sizeof():n paluuarvo on unsigned int.
strlen() syntaksi
strcount = strlen(my_string);
Tässä my_string on merkkijonomuuttuja.
Esimerkki strlen()
Alla olevassa C-ohjelmassa olemme ilmoittaneet merkkijonomuuttujan, jonka tyyppi on char. Strng-muuttuja välitetään argumenttina strlen()-funktiolle, jonka pituus saadaan selville jono.
#include<stdio.h> #include<string.h> int main() { char strng[] = "January"; printf("Length of given string is: %lu\n", strlen(strng)); }
lähtö:
Length of given string is: 7
sizeof() syntaksi
Syntaksi 1)
koko(tyyppi): Tyyppi = viitattu tyyppi
Esimerkki koosta(tyyppi):
Alla olevassa koodissa &type antaa muuttujan osoitteen (kaksois x). Sitä kasvatetaan 1:llä, mikä antaa osoitteen, johon voit tallentaa seuraavan x-tyypin muuttujan.
Kun kirjoitat x:n char*:ksi ja otat eron, voit tietää muistiin tallennettujen char-tyypin muuttujien kokonaismäärän. Olemme käyttäneet getchar():ta merkin lukemiseen.
#include<stdio.h> #define my_sizeof(type) (char *)(&type+1)-(char*)(&type) int main() { double x; printf("%ld", my_sizeof(x)); getchar(); return 0; }
lähtö:
8
Syntaksi 2)
koko(muuttujan nimi): Muuttujan nimi = sen muuttujan nimi, jonka koko haluat määrittää.
Alla olevassa C-ohjelmassa tulostamme koko char -tietotyypin. Printf-lause sisältää sizeof-funktion argumentilla char.
Esimerkki sizeof(muuttujan-nimi):
#include<stdio.h> int main() { printf("sizeof(char) = %d\n\n", sizeof(char)); return 0; }
lähtö:
sizeof(char) = 1
Syntaksi 3)
koko(lauseke): Lauseke = Lauseke, joka sinun on arvioitava.
Esimerkki(lausekkeen) koosta:
Alla olevassa ohjelmassa laskemme ja tulostamme ensin muuttujan koon. Tämän jälkeen arvioimme lausekkeen, tallennamme sen muuttujaan a ja näytämme tuloksen printf-lauseessa.
#include<stdio.h> int main() { char p = 'S'; double q = 4.65; printf("Size of variable p : %d\n",sizeof(p)); printf("Size of an expression : %d\n",sizeof(p+q)); int a = (int)(p+q); printf("Size of explicitly converted expression : %d\n",sizeof(a)); return 0; }
lähtö:
Size of variable p : 1 Size of an expression : 8 Size of explicitly converted expression : 4
Ero strlen():n ja sizeof() välillä
Tässä ovat tärkeät erot strlen():n ja sizeof():n välillä:
Strlen() | Koko() |
---|---|
Strlen() on ennalta määritetty funktio, joka määritellään otsikkotiedostossa, joka tunnetaan nimellä string.h. | Sizeof() on unaarinen operaattori tai käännösaikalauseke, joka laskee muistin määrän muuttuja. |
Tätä menetelmää käytetään merkkijonon tai merkkijonon pituuden selvittämiseen. | Tätä menetelmää käytetään tiedon (allokoidun) todellisen koon löytämiseen tavuina. |
Se laskee merkkien lukumäärän merkkijonossa ja eliminoi nolla-arvot. | Se palauttaa operandin koon, ei merkkijonon pituutta (mukaan lukien nolla-arvot). |
Se varaa muistia ajon aikana ja etsii muuttujan nolla-arvon. | Sizeof() ei välitä muuttujan arvosta. |
Strlen()-funktio toimii vain merkkijonojen kanssa | Sizeof()-funktio palauttaa varatun muistin määrän tavuina. |
Palautusarvo strlen():ssä on pitkä int. | Paluuarvo kohdassa sizeof() on etumerkitön int. |
Strlen():llä on vain yksi syntaksi, joka on int strlen(const char *str); | On olemassa kolme syntaksia sizeof() 1) sizeof(type), 2) sizeof(muuttujan-nimi) ja 3) sizeof(lauseke): |