0Pricing
Zig Academy · Aula

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

  1. Importando cabeçalhos C com @cImport
  2. Chamando funções C e vinculando bibliotecas
  3. Ponteiros, strings e tipos C
  4. zig translate-c para ler C como Zig
← Voltar para Zig Academy