wleci
O mnieProjektyBlogKontakt
Kontakt
Wróć do bloga
C++CPamięć

Napisy w stylu C: Tablice typu char i znak null

Zrozumienie niskopoziomowej obsługi tekstu: jak działają tablice znakowe zakończone bajtem zerowym.

28 stycznia 20262 min czytania
Udostępnij:

Czym są C-Style Strings?

W języku C oraz w niskopoziomowym C++, napis nie jest dedykowanym obiektem, lecz tablicą znaków typu char, która kończy się specjalnym znakiem o wartości zero: \0 (tzw. null terminator).

Deklaracja i inicjalizacja

Kiedy piszesz napis w cudzysłowie, kompilator automatycznie dodaje \0 na końcu:

cpp
char napis[] = "Hej"; // W pamięci: ['H', 'e', 'j', '\0'] // Rozmiar tablicy to 4 bajty, mimo że tekst ma 3 litery.

Dlaczego znak \0 jest ważny?

Funkcje operujące na takich napisach (np. te z biblioteki <cstring>) nie wiedzą, jak długa jest tablica. Przeszukują ją znak po znaku, aż natrafią na bajt o wartości 0. Jeśli go zabraknie, program będzie czytał pamięć dalej, co prowadzi do błędów typu Undefined Behavior.

Podstawowe funkcje z biblioteki <cstring>

Aby manipulować takimi napisami, używamy funkcji:

  • strlen(str): Zwraca długość napisu (bez znaku zero).
  • strcpy(dest, src): Kopiuje napis (niebezpieczne, może przepełnić bufor!).
  • strcmp(s1, s2): Porównuje dwa napisy (zwraca 0, jeśli są identyczne).

std::string vs C-style

W nowoczesnym C++ prawie zawsze używamy klasy std::string. Jednak napisy w stylu C są wciąż obecne w:

  1. Interfejsach systemowych (np. WinAPI, Linux syscalls).
  2. Wywołaniach funkcji main(int argc, char* argv[]).
  3. Optymalizacji pod systemy wbudowane (embedded).

Ważne: Jeśli masz std::string i potrzebujesz wersji w stylu C (np. do starej biblioteki), użyj metody .c_str().

Może Cię zainteresować

C++Algorytmy

Podstawowe Algorytmy w C++: Sortowanie, Wyszukiwanie i Generowanie

Poznaj potęgę biblioteki <algorithm>. Przewodnik po funkcjach std::sort, std::find, std::copy oraz generowaniu ciągów danych.

1 min czytania
C++Matematyka

Biblioteka <cmath> w C++ – Niezbędnik Matematyczny

Przegląd najważniejszych funkcji matematycznych w C++: od potęgowania po zaawansowaną trygonometrię.

1 min czytania
C++Programowanie

Zrozumieć Dyrektywę #include w C++

Przewodnik po dyrektywie #include: dowiedz się, jak preprocesor łączy pliki i dlaczego wybór nawiasów ma znaczenie.

1 min czytania
Wróć do bloga
wleci.pl

Full-stack Developer

Tworzę nowoczesne aplikacje webowe z pasją do czystego kodu i dobrego designu.

[email protected]
Polska

Nawigacja

  • Start
  • O mnie
  • Projekty
  • Blog
  • Kontakt

Usługi

  • Aplikacje webowe
  • Strony internetowe
  • API & Backend
  • Konsultacje

Technologie

  • React / Next.js
  • TypeScript
  • Node.js
  • PostgreSQL

Social

© 2026 wleci.pl. Wszelkie prawa zastrzeżone.

Polityka prywatności•Regulamin

Zrobione z w Polsce