0Pricing
Zig Academy · Lekcja

Wskaźniki, napisy i typy C

Połącz systemy typów C i Zig.

Wskaźniki, napisy i typy C to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Zig Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Zig Academy zawiera 4 lekcji w sumie.

Typy C są tłumaczone

Podczas importowania C przez Zig każdy typ C jest odwzorowywany na typ Zig. int staje się c_int, dzięki czemu szerokości dokładnie odpowiadają ABI języka C.

const x: c_int = 10;

Liczby całkowite ABI C

Zig udostępnia nazwy zgodne z ABI, takie jak c_int, c_uint, c_long i c_char, aby wartości odpowiadały tym oczekiwanym przez C.

Wskaźniki C używają [*c]

Surowy wskaźnik C staje się specjalnym typem [*c]T. Może mieć wartość null i jest nieściśle konwertowany, odwzorowując elastyczne wskaźniki C.

var p: [*c]u8 = null;

Dlaczego [*c] jest wyjątkowy

Typ [*c] łączy z wskaźnikami C o dowolnej długości, które mogą mieć wartość null. Tam, gdzie to możliwe, umożliwia konwersję do wycinków i wskaźników Zig oraz z powrotem.

Łańcuchy C to bajty

Łańcuch C to po prostu wskaźnik do bajtów zakończonych zerem. Nie przechowuje długości — występuje w nim tylko terminator null.

Literały zakończone terminatorem

Łańcuch w stylu C zapisuje się za pomocą formy z sentinelem. Typ [*:0]const u8 oznacza bajty zakończone wartością 0.

const s: [*:0]const u8 = "hello";

Przekazywanie łańcuchów do C

Literały łańcuchowe Zig są już zakończone wartością null, więc można przekazać je bezpośrednio do funkcji C oczekujących wskaźnika char.

c.puts("done");

Odczytywanie łańcucha C z powrotem

Aby zamienić łańcuch C na wycinek Zig, użyj std.mem.span, które przechodzi do bajtu null w celu ustalenia długości.

const slice = std.mem.span(cstr);

Wskaźniki void

Wskaźnik void* języka C pojawia się w Zig jako ?*anyopaque. Przed użyciem należy rzutować go z powrotem na konkretny typ wskaźnika.

Rzutowanie za pomocą @ptrCast

Łączenie typów wskaźników po obu stronach granicy C wykorzystuje @ptrCast, które interpretuje wskaźnik na nowo bez zmiany adresu.

const p: *Node = @ptrCast(@alignCast(raw));

Dopasowuj, nie zgaduj

Bezpiecznym nawykiem jest dopasowywanie dokładnych typów C: używaj c_int dla int oraz span dla łańcuchów, aby uniknąć niejawnych błędów.

Szybkie sprawdzenie

Przypomnij sobie, jak Zig zamienia łańcuch C w użyteczny wycinek.

Podsumowanie

Dowiedziałeś się, że typy C są odwzorowywane na nazwy ABI, takie jak c_int, wskaźniki C używają [*c], a std.mem.span zamienia łańcuchy C na wycinki. 🎯

Często zadawane pytania

Czy lekcja „Wskaźniki, napisy i typy C” jest bezpłatna?

Tak — pełny tekst „Wskaźniki, napisy i typy C” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wskaźniki, napisy i typy C”?

Połącz systemy typów C i Zig. Ćwiczysz Zig Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Zig Academy?

Nie wymagamy żadnego doświadczenia. Zig Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Wskaźniki, napisy i typy C”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Zig Academy?

Tak. Każda lekcja Zig Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Importowanie nagłówków C za pomocą @cImport
  2. Wywoływanie funkcji C i linkowanie
  3. Wskaźniki, napisy i typy C
  4. zig translate-c do odczytywania C jako Zig
← Powrót do Zig Academy