Pamięć komputera to seria komórek. Każda komórka ma wielkość jednego bajtu, zwykle jest to przestrzeń zajmowana przez postać Zachodniej Europy. Rozmiar obiektu jest podawany w bajtach. Ten artykuł zawiera podsumowanie typów C ++. Powinieneś już mieć podstawową wiedzę na temat C ++, aby zrozumieć ten artykuł.
Treść artykułu
- Typy podstawowe
- Sposoby konstruowania typów złożonych
- Tablice
- Wyliczenie
- Klasa
- Unia
- Bibliografia
- Funkcje
- Inne typy złożone
- Wniosek
Typy podstawowe
Typy podstawowe to typy skalarne.
Bool
Typ boolean lub typ bool ma wartość prawdziwej lub fałszu dla 1 lub 0. Prawda lub fałsz zajmuje jeden bajt.
char, niepodpisany char i podpisał Char
Char jest zazwyczaj dla jednej postaci Europy Zachodniej. Zazwyczaj zajmuje jeden bajt. Istnieje również niepodpisany i podpisany char. Niepodpisane znaki nie obejmują wartości ujemnych, podczas gdy podpisane znaki obejmują wartości ujemne. Rodzaj wartości, którą utrzymuje char, zależy od kompilatora i może być po prostu niepodpisanym charakterem. Te trzy rodzaje zwariów są nazywane, wąskie typy znaków, a każdy zajmuje jeden bajt.
Liczba całkowita
Istnieje pięć niepodpisanych standardowych typów liczb całkowitych i pięć podpisanych standardowych typów liczb całkowitych. Pięć typów liczb całkowitych niepodpisanych to: „niepodpisany Char”, „Unsigned Short Int”, „Unsigned Int”, „Unsigned Long Int” i „Unsigned Long Long Int”. Pięć odpowiednich podpisanych typów liczb całkowitych to: „Podpisany Char”, „Short Int”, „Int”, „Long Int” i „Long Long Int”.
„Niepodpisany char” to ten sam typ co wąskie typy znaków (patrz wyżej). „Podpisany char” to drugi rodzaj wąskich typów znaków (patrz wyżej).
Z kompilatorem G ++ „niepodpisany char” lub „podpisany char” zajmuje jeden bajt; „Unsigned Short Int” lub „Short Int” zajmuje dwa bajty; „Unsigned Int” lub „Int” zajmuje cztery bajty; „Unsigned Long Int” lub „Long Int” zajmuje 8 bajtów; „Unsigned Long Long Int” lub „Long Long Int” nadal zajmuje 8 bajtów (na razie).
char16_t, char32_t, wchar_t
W kontaktach z postaciami Europy Zachodniej typ typu charyt wystarczy w wielu sytuacjach. Jednak w przypadku języków chińskich i innych języków wschodnich potrzebne jest Char16_T lub Char32_T lub Wchar_t. Z kompilatorem G ++, Char16_T zajmuje dwa bajty; char32_t zajmuje cztery bajty, a WChar_t również zajmuje cztery bajty.
Bool, Char16_T, Char32_T, WCAR_T, podpisane i niepodpisane typy liczb całkowity.
W tym momencie artykułu wspomniano dwa typy zbiorowe: wąskie typy znaków i integralne typy.
Punkty pływające
Załóżmy, że liczby 457 000 i 457 230 to ten sam odczyt, mierzony przez dwa różne instrumenty pomiarowe. 457 230 jest bardziej precyzyjne niż 457 000, ponieważ wartość jest bardziej szczegółowa (obejmuje mniejsze miejsca: + 200 plus 30). Liczba zmiennoprzecinkowa to liczba z częścią ułamkową (dziesiętną). Chociaż liczby na komputerze są sekwencją bitów, niektóre liczby zmiennoprzecinkowe są bardziej precyzyjne niż inne.
Niektóre instrumenty pomiarowe wykonują pomiary w minimalnych krokach, powiedzmy 10 jednostek. Taki instrument miałby następujące odczyty: 10, 20, 30, 40,… 100, 110, 130, 140,… 200, 210, 220, 230, 240 i tak dalej. Chociaż liczby na komputerze są sekwencją bitów, liczby zmiennoprzecinkowe wahają się w niektórych minimalnych etapach (znacznie mniejsze niż 10 jednostek).
C ++ ma trzy typy punktów zmiennoprzecinkowych, które są: pływak, podwójny i długi. W przypadku każdego kompilatora podwójne musi mieć precyzję, która jest wyższa niż w przypadku pływaka lub przynajmniej float; długi podwójny musi mieć precyzję, która jest wyższa niż w przypadku podwójnego lub przynajmniej podwójnego.
Istnieje trzecia nazwa zbiorowa: typ arytmetyczny. To jest nazwa typów integralnych i zmiennoprzecinkowych. Zauważ, że jest to również nazwa dla wszystkich typów skalarnych, jak wyjaśniono do tej pory.
W przypadku kompilatora G ++ liczba bajtów dla pływaka wynosi cztery; Liczba bajtów dla podwójnego wynosi osiem; Liczba bajtów dla długiego podwójnego wynosi szesnaście.
Typ pustki
Z kompilatorem G ++ rozmiar typu pustki to jeden bajt. Bajt oficjalnie nie ma bitów, co oznacza, że jego lokalizacja ma puste treści.
Sposoby konstruowania typów złożonych
Typy złożone są typami nie finansowymi. Oznacza to, że typy złożone są typami innych. W tej sekcji wyjaśniono podstawy typów złożonych.
Tablice
Poniższy segment kodu pokazuje szereg Ints i szereg znaków:
int arrint [] = 1, 2, 3, 4, 5;Wyliczenie
Wyliczenie jest typem, z nazwanymi stałymi. Rozważ następujący segment kodu:
enum a = 3, b, c;Wyjście to: 4. Pierwszy wiersz segmentu kodu to wyliczenie, a A, B lub C jest wyliczką.
Klasa
Klasa jest uogólnioną jednostką, z której można utworzyć wiele obiektów tej samej uogólnionej jednostki (utworzone). Poniższy program pokazuje klasę i dwa obiekty, utworzone z niej. Taki obiekt różni się od obiektu skalarnego.
#włączaćWyjście to: 5 5. Nazwa klasy to THECLA, a nazwy dwóch obiektów to OBJ1 i OBJ2. Zwróć uwagę na półkolis tuż po opisie (definicji) klasy. Zwróć uwagę, w jaki sposób dwa obiekty zostały utworzone w funkcji Main ().
Uwaga: NUM jest elementem danych, a FN jest funkcją członka.
Unia
struct
Struktura jest jak tablica, ale zamiast mieć par indeksu/wartości, ma pary nazwy/wartości. Nazwy mogą być napisane w dowolnej kolejności. Poniższy program pokazuje strukturę i jego użycie:
#włączaćWyjście to:
5, 2.3, aNazwa struktury to thecla. Obj1 i obj2 to dwa różne obiekty struktury.
Unia
Poniższy program pokazuje związek i jego użycie:
#włączaćWyjście to: 2.3. Związek jest podobny do struktury. Główną różnicą między strukturą a unii jest to, że dla struktury tylko jeden element może mieć wartość (zainicjowana) w dowolnym momencie. W powyższym programie członek FLT ma wartość 2.3. Każdy z pozostałych członków, num lub ch, może mieć wartość następną tylko wtedy, gdy wartość FLT zostanie porzucona.
Bibliografia
Odniesienie jest synonimem identyfikatora. Poniższy segment kodu pokazuje, jak uzyskać odniesienie do identyfikatora:
int id = 5;Wyjście to: 5 5 5. Ref1 i ref2 są synonimami identyfikatora.
Odniesienie LVALUE i odniesienie RVALUE
Powyższe odniesienia to referencje LVALUE. Poniższy kod pokazuje odniesienie RVALUE:
int && ref = 5;Wyjście to: 5. To odniesienie jest tworzone bez identyfikacji jakiejkolwiek lokalizacji w pamięci. Aby to osiągnąć, podwójnie i jest potrzebne, ja.mi., &&.
Wskaźnik
Wskaźnik nie jest tak naprawdę jednostką C ++. Jednak stanowi lepszy program do radzenia sobie z referencjami. Poniższy kod pokazuje, w jaki sposób można utworzyć wskaźnik:
int Ptdid = 5;Wyjście to: 5. Zwróć uwagę na różnicę nazwy między PTDID i PTDID. PTDID jest spiczastym obiektem, a ptrid to obiekt wskaźnika. & PtDID zwraca adres spiczastego obiektu przypisany do Ptrid. Aby zwrócić wartość spiczastego obiektu, użyj *ptrid.
Funkcje
Podstawowa funkcja i jej wywołanie
Poniższy kod pokazuje podstawową definicję funkcji i jej wywołanie:
#włączaćWyjście jest
widzianyWywołanie funkcyjne to FN (5). Nazwa funkcji to FN.
Odniesienie i wskaźnik do funkcji
i FN Zwróć adres w pamięci funkcji, której nazwa to FN. Poniższe stwierdzenie deklaruje wskaźnik do funkcji:
int (*func) ();Tutaj FUNC to nazwa wskaźnika do funkcji. Pierwsza para nawiasów różnicuje ten wskaźnik funkcji od wskaźnika obiektu skalarnego. FUNC można utrzymać adres funkcji zidentyfikowanej przez FN, w następujący sposób:
func = &fn;Poniższy program wprowadza odniesienie do funkcji i wskaźnik:
#włączaćWyjście to: 5. Zauważ, że zarówno FN, jak i FUNC mają parametr INT w deklaracji.
Inne typy złożone
Powyższe podstawowe typy związków są złożone same w sobie. Są również używane do konstruowania opracowanych typów związków.
typedef
Słowo zarezerwowane przez typedef służy do zastąpienia sekwencji typów jedną nazwą (dla sekwencji). Poniższy segment kodu to ilustruje:
Typedef unsigned Long int Iduil;Wyjście to 5555555555555555555. W kodzie Iduil stał się typem „niepodpisanego długiego int”.
Strukturalne wiązanie
Wiązanie strukturalne jest cechą, która umożliwia podanie podobiek. Poniższy kod ilustruje to dla tablicy:
int arr [3] = 1, 2, 3;Wyjście to 1 2 3. Tak więc wartości: 1, 2, 3 otrzymały nazwy, x, y, z. Zwróć uwagę na użycie i pozycję zarezerwowanego słowa, automatyczne. Zwróć również uwagę na użycie kwadratowych nawiasów.
Pola bitowe
Pamięć jest sekwencją komórek. Każda komórka bierze bajt. Również każdy bajt składa się z ośmiu bitów. Grupa bitów, niekoniecznie osiem bitów, można ustawić i zmienić. Taka grupa nazywa się pola bitowym. Te grupy leżałyby obok siebie. Jeśli grupy nie stanowią typu, powiedz 16 bitów dla krótkiego int, dodaje się bity wyściółki. Poniższy kod ilustruje to strukturą:
Data strukturyWyjście to: 2/2/21. Całkowita liczba bitów na WKDAD, poniedziałek i MON wynosi 3 + 6 + 5 = 14. Tak więc dodanoby dwa bity wyściółki, aby stanowić 16 bitów dla krótkiej liczby całkowitej 2 bajtów (16 bitów). Następne 8 bitów rozpoczyna się następny krótki int, który jest następnie wypełniony 8 bitami wyściółki.
Uwaga: Unikaj używania pól bitów; Używaj go tylko do badań.
Przestrzeń nazw
Przestrzeń nazw to zestaw nazw, który nie powinien być sprzeczny z tymi samymi nazwami innych zestawów nazwisk. Poniższy program ilustruje użycie tych samych nazw z dwóch różnych przestrzeń nazw, zastosowanych w przestrzeni nazw funkcji Main ():
#włączaćWyjście to:
9Istnieją dwa sprzeczne same nazwy int i dwa sprzeczne nazwy samych pływaków w kodzie.
Specjalizacja szablonu i szablonu
Schemat szablonów umożliwia użycie symboliki zastępczej dla różnych możliwych typów skalarnych. Specjalizacja wybiera określony typ skalarny. Poniższy kod ilustruje to dla funkcji:
#włączaćWyjście to:
Potrzebuję chleba za 3 USD.Szablon pakiet parametrów
Kompilatory mają nadal w pełni zaimplementować tę funkcję - patrz później.
Wniosek
Typy C ++ istnieją w dwóch kategoriach: typy podstawowe i typy złożone. Typy podstawowe to typy skalarne. Podstawowe typy związków to tablice, wyliczenia, klasy, związki, odniesienia, wskaźniki i funkcje. Te podstawowe typy związków są używane do konstruowania opracowanych typów związków, które są typeDef, wiązania strukturalne, pola bitów, przestrzeń nazw i szablon.