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