Różnica między strlen() i sizeof() dla łańcucha w C

Co to jest strlen()

strlen() to funkcja służąca do znajdowania długości ciągu. Zlicza ona całkowitą liczbę znaków zawartych w ciągu, eliminując znak null. Całkowita liczba znaków w ciągu obejmuje litery alfabetu, znaki specjalne i cyfry, z odstępami.

Co to jest sizeof()

Sizeof() to funkcja, która służy do obliczania rozmiaru operandu. Zwraca rozmiar konkretnej zmiennej. Tę funkcję można stosować do dowolnego typu danych, zawierającego typy prymitywne, takie jak integer i typy wskaźników, typy zmiennoprzecinkowe, struktura lub unia. Dane wyjściowe programu zawierającego sizeof() mogą się różnić w systemie 32-bitowym i 64-bitowym.

KLUCZOWE RÓŻNICE

  • Metoda Strlen służy do znajdowania długości tablicy, natomiast metoda sizeof() służy do sprawdzania rzeczywistego rozmiaru danych.
  • Strlen() zlicza liczbę znaków w ciągu, natomiast sizeof() zwraca rozmiar operandu.
  • Strlen() szuka wartości null zmiennej, ale sizeof() nie zwraca uwagi na wartość zmiennej.
  • Wartość zwracana w strlen() to long int, z drugiej strony zwracana wartość w sizeof() to unsigned int.

Składnia strlen()

strcount = strlen(my_string); 

Tutaj my_string jest zmienną tablicową znaków.

Przykład strlen()

W poniższym programie C zadeklarowaliśmy zmienną łańcuchową typu char. Zmienna Strng jest przekazywana jako argument funkcji strlen(), aby znaleźć długość ciąg.

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

Wyjście:

Length of given string is: 7

Składnia sizeof()

Składnia 1)

rozmiar(typ): Typ = typ odniesienia

Przykład sizeof(type):

W poniższym kodzie &type podaje adres zmiennej (double x). Jest on zwiększany o 1, co daje adres, pod którym można zapisać następną zmienną typu x.

Rzutowanie x na znak* i wzięcie różnicy umożliwi poznanie całkowitej liczby zmiennych typu char przechowywanych w pamięci. Do odczytania znaku użyliśmy funkcji 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; 
}

wydajność:

8

Składnia 2)

sizeof(nazwa-zmiennej): Nazwa-zmiennej= nazwa zmiennej, dla której chcesz określić rozmiar.

W poniższym programie C drukujemy typ danych size char. Instrukcja Printf zawiera funkcję sizeof z argumentem char.

Przykład sizeof(nazwa-zmiennej):

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

Wyjście:

sizeof(char) = 1

Składnia 3)

rozmiar(wyrażenie): Wyrażenie = wyrażenie, które musisz obliczyć.

Przykład sizeof(wyrażenie):

W poniższym programie najpierw obliczamy i drukujemy rozmiar zmiennej. Następnie oceniamy wyrażenie, przechowujemy je w zmiennej a i wyświetlamy wynik w instrukcji printf.

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

Wyjście:

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

Różnica między strlen() i sizeof()

Oto ważne różnice między strlen() i sizeof():

Różnica między strlen() i sizeof()

Stren() Rozmiar()
Strlen() to predefiniowana funkcja zdefiniowana w pliku nagłówkowym znanym jako string.h. Sizeof() to operator jednoargumentowy lub wyrażenie w czasie kompilacji, które oblicza ilość pamięci zajmowanej przez zmienna.
Ta metoda służy do znajdowania długości tablicy ciągów lub znaków. Ta metoda służy do znalezienia rzeczywistego rozmiaru danych (przydzielonych) w bajtach.
Zlicza liczbę znaków w ciągu i eliminuje wartości null. Zwraca rozmiar operandu, a nie długość ciągu (w tym wartości null).
Przydziela pamięć w czasie wykonywania i szuka wartości null zmiennej. Sizeof() nie przejmuje się wartością zmiennej.
Funkcja strlen() działa tylko z ciągami znaków Funkcja Sizeof() zwraca ilość przydzielonej pamięci w bajtach.
Wartość zwracana w strlen() to long int. Wartość zwracana w sizeof() to int bez znaku.
Istnieje tylko jedna składnia strlen(), która jest int strlen(const char *str); Istnieją trzy składnie sizeof() 1) sizeof(typ), 2) sizeof(nazwa-zmiennej) i 3) sizeof(wyrażenie):