C ++ sizeof

C ++ sizeof
Sizeof () jest operatorem w c++. Jest to nieusowy operator, który pomaga programistom określić rozmiar operandów, których używają. Typ integralny, zwykle oznaczony według rozmiaru „T”, jest wynikiem tego operatora. Ten operator jest zwykle używany z prymitywnymi typami danych, takimi jak liczba całkowita, pływakowa, wskaźnik itp. Ponadto może zapewnić rozmiar bardziej wyrafinowanych typów danych, takich jak związki i struktury. Jest to operator, który może obliczyć rozmiar operandu i określić rozmiar dowolnego typu danych w czasie kompilacji. Rozmiar jest ilością pamięci RAM używanej przez komputer i jest określany przez operację sizeof ().

Składnia operatora sizeof () w c++

Poniżej opisano składnię operatora sizeof ():

# sizeof (nazwa data_type);

Gdy jest używana z pierwszym typem obiektu, funkcja sizeof () wyświetla rozmiar obiektu w bajtach dla typu wysyłanego obiektu. Rozmiar elementu, który jest w rodzaju wyrażenia, mierzony w bajtach, jest drugim typem. Po ocenie wyrażenia rozmiar pozostaje taki sam.

Przykład 1:

Kiedy typy danych, takie jak int, float, char itp. są używane z operatorem sizeof (), funkcja podaje jedynie ilość pamięci RAM, która jest przydzielona temu konkretnemu typowi danych.

#włączać
za pomocą przestrzeni nazw Std;
int main ()

STD :: Cout << "Size of data type int : " <STD :: Cout << "Size of data type float : " <STD :: Cout << "Size of data type double: " <STD :: Cout << "Size of data type char: " <powrót 0;

Korzystając z operatora sizeof () z poleceniem Cout, oceniamy rozmiar wbudowanych typów danych we wspomnianej aplikacji. Jak widać na następujących wyjściach, operacja sizeof () daje tę samą odpowiedź, jak moglibyśmy się spodziewać, biorąc pod uwagę naszą wiedzę o wielkości bajtów INT, Float, Double i Char.

Przykład 2:

Program, gdy typ klasy jest operowany, używa operatora sizeof (). Oto ilustracja:

#włączać
za pomocą przestrzeni nazw Std;
klasa mybase_class

int x;
;
int main ()

Mybase_class y;
STD :: Cout << "Size of Base class is : "<powrót 0;

Z tylko jedną zmienną liczbową „x” w klasie „MyBase_class” i wyżej wymienionej metody skryptu, oceniamy rozmiar klasy. Najpierw nazywamy daną klasę i tworzymy jej obiekt jako „y”. Następnie mamy operator sizeof (), który przyjmuje „y” jako dane wejściowe. Zmienne liczb całkowitych zajmują 4 bajty, więc wynik wynosi 4 bajty, jak wydrukowano w następujący sposób:

Przykład 3:

Jeśli zwiększymy liczbę zmiennych całkowitych w klasie, powstaje następujący kod:

#włączać
za pomocą przestrzeni nazw Std;
klasa myClass_base

int i;
int J;
;
int main ()

MyClass_Base j;
STD :: Cout << "Size of MyClass_Base is : "<powrót 0;

W poprzednim kodzie jest teraz druga zmienna całkowitą „J”. Biorąc pod uwagę, że zmienna intensywna zajmuje 4 bajty i istnieją dwie zmienne liczb całkowitych jako „i” i „j”, klasa „myClass_base” w tym scenariusz.

Przykład 4:

Kod może przypominać następujące czynności, jeśli uwzględnimy zmienną char:

#włączać
za pomocą przestrzeni nazw Std;
klasa myclass

int p;
int q;
char ch;
;
int main ()

Myclass q;
STD :: Cout << "Size of MyClass is : "<powrót 0;

W poprzednim kodzie klasy „MyClass” używane są dwie liczby całkowitej i jedna zmienna char. Rozmiar klasy powinien wynosić 9 bajtów, ponieważ istnieją trzy typy danych (int+int+char) zgodnie z naszymi obliczeniami. Ale jest to nieprawidłowe ze względu na ideę wyściółki struktury. Możesz zobaczyć następującą wartość wyniku:

Przykład 5:

Przypadek, w którym operand jest tablicą. Rzućmy okiem na implementację programu:

#włączać
za pomocą przestrzeni nazw Std;
int main ()

int arr_set [] = 5,15,25,35,45;
STD :: Cout << "Size of the 'arr_set' is : "<powrót 0;

Ustanowiliśmy tablicę typu liczb całkowitych jako „ARR_SET” z pięcioma elementami w poprzednim programie. Określiliśmy rozmiar tablicy za pomocą operatora sizeof (). Tablica ma wielkość 20 bajtów, ponieważ typ danych INT zajmuje 4 bajty, a w tablicy znajduje. Jak widać przy następujących wyjściach, operacja sizeof () wytworzyła ten sam wynik.

Przykład 6:

Przykład ma już rozmiar tablicy. Rozważmy tablicę z określonej perspektywy.

#włączać
za pomocą przestrzeni nazw Std;
void new_function (int array [])

STD :: Cout << "Size of array is : " <
int main ()

int array [] = 51,52,53,54,55;
new_function (tablica);
powrót 0;

Próbowaliśmy skorzystać z funkcji „new_function” we wspomnianej aplikacji do wydrukowania rozmiaru tablicy. W tym przypadku utworzyliśmy tablicę typu liczb całkowitych i wysyłamy parametr „tablica” do new_function (). Rozmiar wskaźnika liczb całkowitych lub int* jest zwracany przez new_function (). W 64-bitowych systemach operacyjnych rozmiar int* wynosi 8 bajtów. Wyjście generuje rozmiar tablicy w następujący sposób:

Przykład 7:

Teraz jest to przykład, w którym argument jest typem wskaźnika wewnątrz operatora sizeof ().

#włączać
za pomocą przestrzeni nazw Std;
int main ()

int *ptr1 = new int (31);
STD :: Cout << "ptr1 size:" <STD :: Cout << "*ptr1 size :" <podwójne *ptr2 = nowy podwójny (20.99);
STD :: Cout <<"ptr2 size :" <STD :: Cout <<" *ptr2 size :"<char *ptr3 = nowy char („m”);
STD :: Cout <<"ptr3 size :" <STD :: Cout <<"*ptr3 size :"<powrót 0;

Obliczyliśmy rozmiar wskaźników w skrypcie wspomnianym wcześniej. W przypadku typów danych „INT”, „Double” i „char” rozmiary wskaźników pozostają stałe. Rozmiar wskaźnika wynosi 4 bajty, jeśli komputer miał 32-bitowy system operacyjny. Rozmiar wskaźnika wynosi 8 bajtów, jeśli komputer uruchomi 64-bitowy system operacyjny. Wynik to 8 bajtów, gdy wykonujemy ten skrypt na 64-bitowej platformie. Teraz, jeśli podamy wskaźnik symbol „*”, wyjście zmienia się w zależności od typu danych. Na przykład, jeśli *PTR1 jest typem liczb całkowitych, operator sizeof () podaje 4 bajty, ponieważ typ danych INT zajmuje 4 bajty. Poniżej znajduje się wynikowy rozmiar wskaźników odpowiadających każdemu określonemu typowi danych:

Przykład 8:

Przykład, w którym mamy wyrażenie jako operator sizeof ().

#włączać
za pomocą przestrzeni nazw Std;
int main ()

int Integer_1;
Double Integer_2;
Cout << "size of int and double: " <powrót 0;

Mamy dwie zmienne, odpowiednio Integer_1 i Integer_2, odpowiednio typów int i podwójnych. Są one zadeklarowane w programie. Jak wiemy, liczby całkowite mają 4 bajty, a podwójne są 8 bajtów. Dodaliśmy oba w operatorze sizeof (). Zmienna, podwójna z rozmiarem 8-bajtowym, jest wynikiem.

Wniosek

Wyjaśnienie sizeof () dla C ++ kończy się tutaj. Przekroczyliśmy szczegółowe informacje na temat działania operatora C ++ sizeof (), wraz z odpowiednimi przykładami. Dowolny typ danych, wyrażenie, tablica itp. może mieć określony rozmiar za pomocą operatora sizeof (). Typ danych lub wyrażenie należy podać jako część argumentu. A funkcja zwraca rozmiar tego typu danych w bajtach.