Erinevus strlen() ja sizeof() vahel C-stringi jaoks

Mis on strlen()

strlen() on funktsioon stringi pikkuse leidmiseks. See loendab stringis esitatud tรคhemรคrke kokku, kรตrvaldades nullmรคrgi. Tรคhemรคrkide koguarv stringis sisaldab tรคhestikku, erimรคrke ja numbreid koos tรผhikutega.

Mis on sizeof ()

Suurus() on funktsioon, mida kasutatakse selle operandi suuruse arvutamiseks. See tagastab konkreetse muutuja suuruse. Seda funktsiooni saab rakendada mis tahes andmetรผรผbile, mis sisaldab primitiivseid tรผรผpe, nagu tรคisarv ja osuti tรผรผbid, ujukomatรผรผbid, struktuur vรตi liit. Programmi sizeof() vรคljund vรตib 32-bitises ja 64-bitises sรผsteemis erineda.

Pร•HISED VAHED

  • Massiivi pikkuse leidmiseks kasutatakse meetodit Strlen, andmete tegeliku suuruse leidmiseks aga sizeof() meetodit.
  • Strlen() loendab mรคrkide arvu stringis, samas kui sizeof() tagastab operandi suuruse.
  • Strlen() otsib muutuja nullvรครคrtust, kuid sizeof() ei hooli muutuja vรครคrtusest.
  • Tagastusvรครคrtus strlen()-s on pikk int, teisest kรผljest on sizeof()-s tagastusvรครคrtus mรคrgita int.

strlen() sรผntaks

strcount = strlen(my_string); 

Siin on minu_string mรคrgimassiivi muutuja.

strlen() nรคide

Allolevas C-programmis oleme deklareerinud char tรผรผpi stringimuutuja. Muutuja Strng edastatakse funktsiooni strlen() argumendina, et leida selle pikkus nรถรถr.

#include<stdio.h> 
#include<string.h> 
int main() 
{ 
    char strng[] = "January"; 
    printf("Length of given string is: %lu\n", strlen(strng));   
}

Vรคljund:

Length of given string is: 7

Suuruse() sรผntaks

Sรผntaks 1)

suurus (tรผรผp): Tรผรผp = viidatud tรผรผp

Nรคide suurusest(tรผรผp):

Allolevas koodis annab &type muutuja aadressi (topelt x). Seda suurendatakse 1-ga, mis annab aadressi, kuhu saab salvestada jรคrgmise x-tรผรผpi muutuja.

X-i sisestamine char*-sse ja erinevuse vรตtmine vรตimaldab teil teada mรคllu salvestatud char-tรผรผpi muutujate koguarvu. Tรคhemรคrgi lugemiseks oleme kasutanud getchar().

#include<stdio.h> 
#define my_sizeof(type) (char *)(&type+1)-(char*)(&type) 
int main() 
{ 
    double x; 
    printf("%ld", my_sizeof(x)); 
    getchar(); 
    return 0; 
}

vรคljund:

8

Sรผntaks 2)

suurus(muutuja nimi): Muutuja nimi = muutuja nimi, mille suurust soovite mรครคrata.

Allolevas C-programmis prindime suuruse char andmetรผรผbi. Printf-lause sisaldab funktsiooni sizeof argumendiga char.

Nรคide suurusest(muutuja-nimi):

#include<stdio.h>
int main()
{
	printf("sizeof(char) = %d\n\n", sizeof(char));
		
	return 0;
}

Vรคljund:

sizeof(char) = 1

Sรผntaks 3)

suurus(avaldis): Avaldis= Vรคljend, mida pead hindama.

Nรคide(avaldise) suurusest:

Allolevas programmis arvutame ja trรผkime kรตigepealt muutuja suuruse. Pรคrast seda hindame avaldist, salvestame selle muutujas a ja kuvame tulemuse printf-lauses.

#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;
}

Vรคljund:

Size of variable p : 1                                                                                                                               
Size of an expression : 8                                                                                                                            
Size of explicitly converted expression : 4  

Erinevus strlen() ja sizeof() vahel

Siin on olulised erinevused strlen() ja sizeof() vahel:

Erinevus strlen() ja sizeof() vahel

Strlen() Suurus()
Strlen() on eelmรครคratletud funktsioon, mis on mรครคratletud pรคisefailis, mida nimetatakse string.h-ks. Sizeof() on รผhekordne operaator vรตi kompileerimisaja avaldis, mis arvutab mรคlumahu, mille muutuja.
Seda meetodit kasutatakse stringi vรตi mรคrgi massiivi pikkuse leidmiseks. Seda meetodit kasutatakse andmete tegeliku suuruse (eraldatud) leidmiseks baitides.
See loendab mรคrkide arvu stringis, kรตrvaldades nullvรครคrtused. Tagastab operandi suuruse, mitte stringi pikkuse (sh nullvรครคrtused).
See eraldab kรคitusajal mรคlu ja otsib muutuja nullvรครคrtust. Sizeof() ei hooli muutuja vรครคrtusest.
Funktsioon Strlen() tรถรถtab ainult mรคrgistringidega Funktsioon Sizeof() tagastab eraldatud mรคlumahu baitides.
Tagastusvรครคrtus strlen()-s on pikk int. Tagastusvรครคrtus suuruses() on mรคrgita int.
Strlen()-l on ainult รผks sรผntaks, mis on int strlen(const char *str); Suurus() on kolm sรผntaksit: 1) sizeof(type), 2) sizeof(muutuja-nimi) ja 3) sizeof(avaldis):

Vรตta see postitus kokku jรคrgmiselt: