Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

Tablica typu Char – Jak w prosty sposób przechowywać ciągi znaków?

Osobiście nie jestem wielkim zwolennikiem używania tablic przechowujących dane typu char ale niestety czasami są one niezbędne i to nie tylko przy rozwiązywaniu różnych zadań programistycznych. Tablica przechowująca znaki ma kilka innych bardzo ciekawych właściwości niż na przykład tablica przechowująca liczby typu int. Przyjrzyjmy się co dodatkowego można „wycisnąć” z tego elementu języka C++.

Aby zrozumieć działanie tablicy char napiszmy sobie prosty program:

#include <iostream>

using namespace std;

int main() {
     char tab[]="Napis";
 
     for(int i = 0;i<5;i++) {
          cout << "tab[" << i << "]: " << tab[i] << endl;
     }

     return 0;
}

Po uruchomieniu powyższego programu w oknie konsoli uzyskamy taki rezultat:

tablica-char-wynik-dzialania-programu

Jak widać, kompilator stworzył 6 sześcioelementową tablicę znakową zawierającą znaki 'N’, 'a’, 'p’, 'i’, 's’. Na jej końcu znajduje się bit 0, czego nie widać na konsoli, ale możemy to sprawdzić lekko przerabiając powyższy program:

#include <iostream>

using namespace std;

int main() {
     char tab[]="Napis";
     
 	 int i = 0;
     while(tab[i] != '\0') {
          cout << "tab[" << i << "]: " << tab[i] << endl;
          i++;
 	 }

     return 0;
}

Ten kod również zwróci nam taki sam efekt jak w przypadku z pętlą for.

Należy tutaj zauważyć iż kompilator sam po długości napisu rozpoznaje jak wielka ma być tablica oraz ważne jest żeby pamiętać iż dany wyraz (literał tekstowy) możemy przypisać do tablicy tylko w momencie jej definiowania). Oczywiście wysłanie takiej tablicy do strumienia spowoduje wypisanie kolejnych jej elementów czyli w naszym przypadku znaków char.

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, , , ,

Dodaj komentarz

Odpowiedz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Pin It on Pinterest