Nieodzownym składnikiem każdego programu są zmienne. Zmienna służy do tymczasowego przechowywania informacji, na których będą wykonywane operacje. W językach programowania, które mają typowanie statyczne (takim jest np. C++) nadajemy jawnie typ zmiennej, który będzie znany już w czasie kompilacji. Dzięki temu można wyłapać potencjalne błędy przed uruchomieniem programu. Kompilator zasygnalizuje błędy jak np. przypisanie łańcucha tekstowego do zmiennej typu zmiennoprzecinkowego.

Typy prymitywne

Typy prymitywne są to podstawowe typy danych, które można nadać zmiennym lub mogą posłużyć do stworzenia własnych złożonych typów. W zależności od rodzaju i ustawień kompilatora zakres danych (rozmiar) zmiennych prymitywnych może być różny. Tabela przedstawia listę typów podstawowych.

Nazwa Opis
bool Wartość logiczna – true lub false
char Typ znakowy (1 bajt)
short int Typ liczbowy (2 bajty)
int Typ liczbowy (4 bajty)
long Większy lub równy typowi int
long long Typ liczbowy (8 bajtów)
float Typ zmiennoprzecinkowy (4 bajty)
double Typ zmiennoprzecinkowy (8 bajtów)
long double Równoważny typowi double1
void Brak typu
enum Typ wyliczeniowy. Możliwość zdefiniowania dopuszczalnych wartości.

Modyfikatory

Właściwości zmiennej można zmienić za pomocą tzw. modyfikatorów.

Nazwa Opis
signed Zmienna ze znakiem (domyślnie ustawiana)
unsigned Zmienna bez znaku. Zwiększa zakres wartości dodatnich kosztem ujemnych.
const Inicjalizacja zmiennej wartością stałą, bez możliwości jej późniejszej modyfikacji2
volatile Wartość zmiennej może być zmieniona poza kontrolą programu
static Zachowuje się jak zmienna globalna i nie jest usuwana po opuszczeniu funkcji

Typy złożone

Typy złożone bazują na typach podstawowych. Mogą to być tablice, wskaźniki jak i kompozycje typów prostych (klasy i struktury).

Tablice

Tablica jest to ciąg elementów tego samego typu o określonej ilości. Rozmiar tablicy można zadeklarować statycznie podając jej rozmiar, który jest znany w momencie kompilacji lub dynamicznie w trakcie działania programu. Tablice są zawsze indeksowane od zera. Poniższy listing przedstawia sumę tablicy jednowymiarowej typu liczbowego o dwóch elementach.

	int tab[2];
	tab[0] = 10;
	tab[1] = 20;
	int suma = tab[0] + tab[1];

Tablice mogą być N-wymiarowe, w tym celu w kolejnych nawiasach kwadratowych podajemy rozmiar następnego wymiaru.

	int tab2d[2][2];
	tab2d[0][0] = 1;
	tab2d[0][1] = 2;
	tab2d[1][0] = 3;
	tab2d[1][1] = 4;

Powyższe przykłady dotyczyły tablic o statycznym rozmiarze. W celu utworzenia tablicy o nieznanym rozmiarze w trakcie kompilacji, należy posłużyć się wskaźnikami.

Struktury

Struktura służy jako kontener czyli do przechowywania wielu (i różnych typów) zmiennych w jednej zmiennej. Jako przykład posłuży struktura typu Person. Człowieka można określić za pomocą wieku, imienia, miasta w którym mieszka itd.

struct Person
{
	int age;
	char name[100];
	char city[50];
};

Wskaźniki

Wskaźnik jest typem, który wskazuje na określone miejsce w pamięci. Aby zadeklarować zmienną jako wskaźnik, należy poprzedzić nazwę zmiennej gwiazdką.

int a = 100;
int *b = &a;

// a == *b;

Zmienna a została zainicjalizowana wartością 100. Zmienna b wskazuje na adres pamięci zmiennej a, więc porównanie wartości obu zmiennych da wynik true. Operator & służy do wyłuskania adresu pamięci danej zmiennej. Natomiast operator * wykorzystany w porównaniu oznacza de-referencję – czyli pobraniu wartości z obszaru pamięci na jaką wskaźnik wskazuje.

Dokładniejszy opis i zastosowanie wskaźników znajdzie się w późniejszej części kursu.


Objaśnienia

  1. https://msdn.microsoft.com/en-us/library/s3f49ktz(v=vs.120).aspx
  2. Za pomocą rzutowania można usunąć modyfikator

 


Podobne artykuły

Komentarze

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *