Ponteiros, strings e tipos C
Conecte os sistemas de tipos de C e Zig.
Ponteiros, strings e tipos C é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
C Types Get Translated
When Zig imports C, each C type maps to a Zig one. An int becomes c_int, so widths match the C ABI exactly.
const x: c_int = 10;The C ABI Integers
Zig provides ABI-matching names like c_int, c_uint, c_long, and c_char so your values line up with what C expects.
C Pointers Use [*c]
A raw C pointer becomes the special [*c]T type. It can be null and converts loosely, mirroring C's flexible pointers.
var p: [*c]u8 = null;Why [*c] Is Special
The [*c] type bridges C's any-length, maybe-null pointers. It coerces to and from Zig slices and pointers where it can.
C Strings Are Bytes
A C string is just a pointer to bytes ending in a zero. There is no length stored, only the null terminator.
Null-Terminated Literals
Write a C-style string with the sentinel form. The type [*:0]const u8 marks bytes that end in a 0.
const s: [*:0]const u8 = "hello";Pass Strings to C
Zig string literals are already null-terminated, so you can hand them straight to C functions expecting a char pointer.
c.puts("done");Read a C String Back
To turn a C string into a Zig slice, use std.mem.span, which walks to the null byte to find the length.
const slice = std.mem.span(cstr);void Pointers
C's void* shows up as ?*anyopaque in Zig. You cast it back to a concrete pointer type before using it.
Cast with @ptrCast
Bridging pointer types across the C boundary uses @ptrCast, which reinterprets a pointer without changing the address.
const p: *Node = @ptrCast(@alignCast(raw));Match, Do Not Guess
The safe habit is to match C's exact types: use c_int for int and span for strings, so nothing is silently wrong.
Quick Check
Recall how Zig turns a C string into a usable slice.
Recap
You learned that C types map to ABI names like c_int, C pointers use [*c], and std.mem.span turns C strings into slices. 🎯
Perguntas Frequentes
A aula “Ponteiros, strings e tipos C” é grátis?
Sim — o texto completo de “Ponteiros, strings e tipos C” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.
O que vou aprender em “Ponteiros, strings e tipos C”?
Conecte os sistemas de tipos de C e Zig. Você pratica Zig Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Zig Academy?
Nenhuma experiência prévia é necessária. Zig Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Ponteiros, strings e tipos C”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Zig Academy?
Sim. Cada aula de Zig Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Importando cabeçalhos C com @cImport
- Chamando funções C e vinculando bibliotecas
- Ponteiros, strings e tipos C
- zig translate-c para ler C como Zig