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):