Conheça a linguagem que está por trás de sistemas operacionais, compiladores e hardware
C é uma linguagem de programação de propósito geral criada por Dennis Ritchie entre 1969 e 1973 nos laboratórios Bell, nos Estados Unidos. Ela foi desenvolvida para criar o sistema operacional UNIX e rapidamente se tornou uma das linguagens mais influentes da história da computação.
Praticamente todas as linguagens modernas — Java, Python, JavaScript, C++, Rust — foram direta ou indiretamente influenciadas pela linguagem C. Aprender C é como aprender a "falar" com o computador de perto.
stdio.h, stdlib.h e math.h.| Característica | C | Java | Python |
|---|---|---|---|
| Paradigma principal | Procedural | Orientado a Objetos | Multi-paradigma |
| Compilação | Compilada para código nativo | Compilada para bytecode (JVM) | Interpretada |
| Gerenciamento de memória | Manual (malloc / free) | Automático (Garbage Collector) | Automático (GC) |
| Ponteiros | Sim (explícito) | Não (referências gerenciadas) | Não |
| Desempenho | Muito alto | Alto | Moderado |
| Uso típico | SO, drivers, embarcados, jogos | Back-end web, Android, corporativo | Ciência de dados, scripts, web |
Apesar de ser uma linguagem de 1972, C continua sendo extremamente relevante em 2025. Sua presença é dominante em áreas onde desempenho e controle de hardware são críticos.
do kernel do Linux e grandes partes do Windows e macOS são escritos em C
C é a linguagem mais usada em microcontroladores e hardware embarcado no mundo
C aparece consistentemente entre as 3 linguagens mais populares do mundo
Estruturas de dados são uma grande força do C, mas não é esse o diferencial único da linguagem. O diferencial mais marcante do C é outro:
Em outras palavras, C se destaca porque permite:
| Capacidade | O que isso significa na prática |
|---|---|
| Acesso direto à memória por ponteiros | Você pode ler e escrever em endereços específicos de RAM — algo que Java, Python e JavaScript escondem completamente |
| Controle fino sobre alocação e liberação de memória | malloc e free: você decide quando a memória é reservada e quando é devolvida ao sistema |
| Pouca "camada intermediária" entre código e hardware | Não há máquina virtual (como a JVM do Java) nem garbage collector que pause o programa |
| Execução muito rápida | O código C compilado é, em geral, próximo ao desempenho do Assembly — sem overhead de runtime |
| Base para construção de sistemas | Compiladores, drivers, sistemas operacionais e bibliotecas são escritos em C porque a linguagem permite esse nível de controle |
Linux, macOS (kernel XNU), Windows NT — seus núcleos são escritos majoritariamente em C
GCC, Clang, o interpretador CPython (Python), o motor V8 (JavaScript) têm núcleos em C ou C++
Microcontroladores (Arduino, ESP32), sistemas automotivos, equipamentos médicos — C é a linguagem padrão
SQLite, PostgreSQL, MySQL — seus kernels de alto desempenho são implementados em C
| Linguagem | Identidade principal | Ponto forte |
|---|---|---|
| Java | Orientação a objetos, ecossistema corporativo | Portabilidade (JVM), robustez, produtividade em sistemas grandes |
| Python | Produtividade, automação, ciência de dados, IA | Sintaxe concisa, bibliotecas ricas, prototipagem rápida |
| JavaScript | Interatividade web e aplicações full stack | Onipresença no browser, ecosistema Node.js |
| C | Desempenho, controle de memória, baixo nível | Proximidade com o hardware, velocidade de execução, base de sistemas |
C é excelente para ensinar e implementar estruturas de dados porque nele você vê de forma explícita o que outras linguagens escondem:
Por isso C é muito usado em disciplinas de Estrutura de Dados e Algoritmos. Mas isso acontece porque a linguagem expõe bem os mecanismos internos — não porque ela "foi feita principalmente para estruturas de dados".
Para começar de forma rápida, sem instalar nada, use o OnlineGDB:
Abra o site do WinLibs (distribuição pronta do MinGW-w64):
Baixe a versão UCRT + x86_64 (64-bit).
Extraia o ZIP para:
C:\mingw64\
Depois disso, o executável do compilador deve estar em:
C:\mingw64\bin\gcc.exe
bin no PATH do WindowsC:\mingw64\bin
Confirme com OK → OK → OK.
No VSCode: Terminal → New Terminal e execute:
gcc --version g++ --version
Se aparecer a versão do compilador, está tudo certo:
Crie um arquivo main.c com o seguinte conteúdo:
#include <stdio.h>
int main() {
printf("Olá, C!\n");
return 0;
}
Compile e rode no terminal integrado:
gcc main.c -o main ./main
No Windows, se necessário, execute diretamente:
main.exe
Para rodar seus programas C com um atalho de teclado no VSCode, instale a extensão Code Runner:
.c aberto, pressione Ctrl+Alt+N para compilar e executarTodo programa C segue uma estrutura mínima. Veja o programa mais famoso da história da computação:
// hello.c — Meu primeiro programa em C #include <stdio.h> // Inclui a biblioteca de entrada e saída padrão int main() { // Função principal — todo programa começa aqui printf("Olá, Mundo!\n"); // Imprime uma mensagem na tela return 0; // Retorna 0 ao sistema operacional (sucesso) }
Anatomia do programa:
#include <stdio.h> — diretiva de pré-processador que importa funções como printf e scanf.int main() — ponto de entrada obrigatório de todo programa C. O int indica que a função retorna um número inteiro.return 0; — sinaliza ao sistema operacional que o programa terminou com sucesso.Um dos conceitos mais poderosos (e exclusivos) do C é o ponteiro. Um ponteiro é uma variável que armazena o endereço de memória de outra variável, em vez de armazenar um valor diretamente.
#include <stdio.h>
int main() {
int x = 25; // x armazena o valor 25 no endereço 0940 (exemplo)
int* y = &x; // y guarda o ENDEREÇO de x (y aponta para x)
*y = 30; // *y modifica o valor na posição apontada por y (= x)
printf("Valor atual de x: %i\n", x); // Imprime 30
return 0;
}