Tablice 227
jEFEKT DZIAŁANIA:
Lancuchl: Nikt nie jest sam Lancuch2: Nikt nie jest sam
W linii 10 zastąpiliśmy funkcję strcpy () funkcją strncpy (). Pobiera ona trzeci parametr: maksymalną liczbę znaków do skopiowania. Bufor Lancuch2 może pomieścić MaksDlugosc + 1 znaków. Dodatkowe miejsce przeznaczone jest na znak końca tekstu, dodawany automatycznie przez strcpy() i strncpy().
Większość kompilatorów C++ zawiera duży zbiór klas służących do manipulacji danymi. Taką klasą jest np. klasa String.
C++ odziedziczyło po C konwencję kończenia tekstu pustym znakiem (nuli) i biblioteki zawierające takie funkcje jak strcpy (). Jednak wszystkie te funkcje nie są wbudowane w obiektowo zorientowaną strukturę języka. Klasa String oferuje odrębny zbiór danych i funkcji służących do specjalistycznego manipulowania danymi. Pozwala ona na ukrycie danych przez użytkownikiem.
Jeśli twój kompilator nie zawiera takiej klasy (a nawet jeśli zawiera), to możesz napisać własną klasę String.
W minimalnej wersji, klasa String musi zapewnić proste ograniczenia tablic znakowych. Jak wszystkie tablice, również tablice znakowe są statyczne. Ty definiujesz ich rozmiar. Tablica zajmuje podaną przez Ciebie ilość pamięci nawet jeśli jej nie wykorzystujesz w całości. Pisanie poza końcem tablicy jest niedozwolone.
Sprawna klasa String zawsze rezerwuje tyle pamięci ile potrzeba. Jeśli zarezerwowanie pamięci nie jest możliwe, to klasa powinna obsługiwać taką sytuację.
W trakcie tej godziny nauczyłeś się jak tworzyć tablice w C++. Tablica to określonej
wielkości zbiór obiektów tego samego typu.
Tablice nie zapewniają kontroli wartości indeksów. Możliwe jest zatem pisanie i czytanie za końcem tablicy (aczkolwiek jest to niebezpieczne). Indeksy tablicy rozpoczynają się od 0. Bardzo częstym błędem jest odwoływanie się do elementu pod offsetem nv/n elementowej tablicy.
Tablice mogą być jedno lub wielowymiarowe. W obu przypadkach możliwa jest inicjalizacja tablicy w momencie deklaracji. Dotyczy to tablic wbudowanych w C++ wartości takich jak np. int i obiektów klas, w których zdefiniowany jest konstruktor domyślny.
Tablice i ich zawartość mogą być umieszczone na stercie. Jeśli chcesz usunąć tablicę ze sterty pamiętaj o wykorzystaniu nawiasów kwadratowych przy wywoływaniu delete.
EFEKT DZIAŁANIA:
Lancuchl: Nikt nie jest sam Lancuch2: Nikt nie jest sam
ANALIZA:
W linii 10 zastąpiliśmy funkcję strcpy () funkcją strncpy (). Pobiera ona trzeci parametr: maksymalną liczbę znaków do skopiowania. Bufor Lancuch2 może pomieścić MaksDlugosc + 1 znaków. Dodatkowe miejsce przeznaczone jest na znak końca tekstu, dodawany automatycznie przez strcpy{) i strncpy().
Większość kompilatorów C++ zawiera duży zbiór klas służących do manipulacji danymi. Taką klasą jest np. klasa String.
C++ odziedziczyło po C konwencję kończenia tekstu pustym znakiem (nuli) i biblioteki zawierające takie funkcje jak strcpy (). Jednak wszystkie te funkcje nie są wbudowane w obiektowo zorientowaną strukturę języka. Klasa String oferuje odrębny zbiór danych i funkcji służących do specjalistycznego manipulowania danymi. Pozwala ona na ukrycie danych przez użytkownikiem.
Jeśli twój kompilator nie zawiera takiej klasy (a nawet jeśli zawiera), to możesz napisać własną klasę String.
W minimalnej wersji, klasa String musi zapewnić proste ograniczenia tablic znakowych. Jak wszystkie tablice, również tablice znakowe są statyczne. Ty definiujesz ich rozmiar. Tablica zajmuje podaną przez Ciebie ilość pamięci nawet jeśli jej nie wykorzystujesz w całości. Pisanie poza końcem tablicy jest niedozwolone.
Sprawna klasa String zawsze rezerwuje tyle pamięci ile potrzeba. Jeśli zarezerwowanie pamięci nie jest możliwe, to klasa powinna obsługiwać taką sytuację.
W trakcie tej godziny nauczyłeś się jak tworzyć tablice w C++. Tablica to określonej wielkości zbiór obiektów tego samego typu.
Tablice nie zapewniają kontroli wartości indeksów. Możliwe jest zatem pisanie i czytanie za końcem tablicy (aczkolwiek jest to niebezpieczne). Indeksy tablicy rozpoczynają się od 0. Bardzo częstym błędem jest odwoływanie się do elementu pod offsetem n w n elementowej tablicy.
Tablice mogą być jedno lub wielowymiarowe. W obu przypadkach możliwa jest inicjalizacja tablicy w momencie deklaracji. Dotyczy to tablic wbudowanych w C++ wartości takich jak np. int i obiektów klas, w których zdefiniowany jest konstruktor domyślny.
Tablice i ich zawartość mogą być umieszczone na stercie. Jeśli chcesz usunąć tablicę ze sterty pamiętaj o wykorzystaniu nawiasów kwadratowych przy wywoływaniu delete.