Razlika između strlen() i sizeof() za niz u C-u

Što je strlen()

strlen() je funkcija za pronalaženje duljine niza. Broji ukupne znakove koji su predstavljeni u nizu, eliminirajući nulti znak. Ukupan broj znakova u nizu uključuje slova, posebne znakove i brojeve s prazninama.

Što je sizeof()

Sizeof() je funkcija koja se koristi za izračunavanje veličine svog operanda. Vraća veličinu određene varijable. Ova se funkcija može primijeniti na bilo koji tip podataka, uključujući primitivne tipove kao što su integer i vrste pokazivača, tipovi s pomičnim zarezom, struktura ili unija. Izlaz programa koji sadrži sizeof() može se razlikovati na 32-bitnom i 64-bitnom sustavu.

KLJUČNE RAZLIKE

  • Metoda Strlen koristi se za pronalaženje duljine niza, dok se metoda sizeof() koristi za pronalaženje stvarne veličine podataka.
  • Strlen() broji broj znakova u nizu dok sizeof() vraća veličinu operanda.
  • Strlen() traži nultu vrijednost varijable, ali sizeof() ne mari za vrijednost varijable.
  • Povratna vrijednost u strlen() je long int s druge strane povratna vrijednost u sizeof() je unsigned int.

Sintaksa strlen()

strcount = strlen(my_string); 

Ovdje je my_string varijabla niza znakova.

Primjer strlen()

U donjem C programu, deklarirali smo string varijablu tipa char. Varijabla strng prosljeđuje se kao argument funkcije strlen() za pronalaženje duljine niz.

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

Izlaz:

Length of given string is: 7

Sintaksa sizeof()

Sintaksa 1)

veličina(tip): Tip= tip na koji se upućuje

Primjer sizeof(type):

U donjem kodu &type daje adresu varijable (dvostruki x). Povećava se s 1 što daje adresu na koju možete pohraniti sljedeću varijablu tipa x.

Uvrstavanje x u char* i uzimanje razlike omogućit će vam da saznate ukupan broj varijabli tipa char pohranjenih u memoriji. Koristili smo getchar() za čitanje znakova.

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

izlaz:

8

Sintaksa 2)

sizeof(ime-varijable): Variable-name= naziv varijable kojoj želite odrediti veličinu.

U donjem C programu ispisujemo tip podataka size char. Naredba Printf sadrži funkciju sizeof s argumentom char.

Primjer sizeof(naziv-varijable):

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

Izlaz:

sizeof(char) = 1

Sintaksa 3)

sizeof(izraz): Izraz= Izraz koji morate procijeniti.

Primjer sizeof(expression):

U donjem programu prvo izračunavamo i ispisujemo veličinu varijable. Nakon toga, procjenjujemo izraz, spremamo ga u varijablu a i prikazujemo rezultat u printf izjavi.

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

Izlaz:

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

Razlika između strlen() i sizeof()

Evo važnih razlika između strlen() i sizeof():

Razlika između strlen() i sizeof()

Strlen() Veličina()
Strlen() je unaprijed definirana funkcija koja je definirana u datoteci zaglavlja poznatoj kao string.h. Sizeof() je unarni operator ili izraz za vrijeme kompajliranja koji izračunava količinu memorije koju zauzima varijabla.
Ova se metoda koristi za pronalaženje duljine niza znakova ili znakova. Ova se metoda koristi za pronalaženje stvarne veličine podataka (dodijeljenih) u bajtovima.
Broji znakove u nizu eliminirajući null vrijednosti. Vraća veličinu operanda, a ne duljinu niza (uključujući nulte vrijednosti).
Dodjeljuje memoriju tijekom izvođenja i traži nultu vrijednost varijable. Sizeof() ne mari za vrijednost varijable.
Funkcija Strlen() radi samo s nizovima znakova Funkcija Sizeof() vraća količinu dodijeljene memorije u bajtovima.
Povratna vrijednost u strlen() je long int. Povratna vrijednost u sizeof() je unsigned int.
Postoji samo jedna sintaksa strlen() koja je int strlen(const char *str); Postoje tri sintakse za sizeof() 1) sizeof(tip), 2) sizeof(naziv-varijable) i 3) sizeof(izraz):