Różnica między strlen () i sizeof () dla stringów w C

Spisie treści:

Anonim

Co to jest strlen ()

strlen () to funkcja znajdująca długość łańcucha. Zlicza wszystkie znaki, które są prezentowane w ciągu, eliminując znak pusty. Łączna liczba znaków w ciągu obejmuje, alfabety, znaki specjalne i cyfry ze spacjami.

Z tej różnicy między strlen () i sizeof () dla stringów w samouczku C, dowiesz się:

  • Co to jest strlen ()
  • Co to jest sizeof ()
  • Składnia strlen ()
  • Składnia sizeof ()
  • Różnica między strlen () i sizeof ()

Co to jest sizeof ()

Sizeof () to funkcja używana do obliczania rozmiaru jej operandu. Zwraca rozmiar określonej zmiennej. Tę funkcję można zastosować do dowolnego typu danych, zawierającego typy pierwotne, takie jak typy całkowite i wskaźnikowe, typy zmiennoprzecinkowe, struktury lub sumy. Dane wyjściowe programu zawierającego sizeof () mogą być inne w systemie 32-bitowym i 64-bitowym.

KLUCZOWE RÓŻNICE:

  • Do znalezienia długości tablicy używana jest metoda Strlen, natomiast do znalezienia rzeczywistego rozmiaru danych używana jest metoda sizeof ().
  • Strlen () zlicza liczbę znaków w ciągu, podczas gdy sizeof () zwraca rozmiar operandu.
  • Strlen () szuka wartości null zmiennej, ale sizeof () nie dba o wartość zmiennej.
  • Wartość zwracana w strlen () to long int, z drugiej strony zwracana wartość w sizeof () to int bez znaku.

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 () w celu znalezienia długości łańcucha.

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

Wynik:

Length of given string is: 7

Składnia sizeof ()

Składnia 1)

sizeof (type): Type = typ przywoływany

Przykład sizeof (type):

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

Rzutowanie x na typ char * i pobranie różnicy pozwoli ci poznać całkowitą liczbę zmiennych typu char przechowywanych w pamięci. Do odczytania znaku użyliśmy funkcji getchar ().

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

wynik:

8

Składnia 2)

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

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

Przykład sizeof (nazwa-zmiennej):

#includeint main(){printf("sizeof(char) = %d\n\n", sizeof(char));return 0;}

Wynik:

sizeof(char) = 1

Składnia 3)

sizeof (expression): Expression = Wyrażenie, które musisz obliczyć.

Przykład sizeof (wyrażenie):

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

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

Wynik:

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

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

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

Strlen () Rozmiar()
Strlen () to predefiniowana funkcja, która jest zdefiniowana w pliku nagłówkowym znanym jako string.h. Sizeof () jest operatorem jednoargumentowym lub wyrażeniem czasu kompilacji, które oblicza ilość pamięci zajmowanej przez zmienną.
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, eliminując wartości null. Zwraca rozmiar operandu, a nie długość łańcucha (w tym wartości null).
Alokuje pamięć w czasie wykonywania i szuka wartości null zmiennej. Sizeof () nie dba o wartość 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 liczba całkowita 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):