extern e global
Compartilhamento entre arquivos.
extern e global é uma aula grátis de C 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 C Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C Academy inclui 4 aulas no total.
Variáveis globais
Uma variável declarada fora de qualquer função tem escopo de arquivo e existe durante todo o programa. Ela é uma variável global.
#include <stdio.h>
int counter = 0;
void bump(void) {
counter++;
}
int main(void) {
bump();
bump();
printf("counter = %d\n", counter);
return 0;
}As variáveis globais são compartilhadas
Toda função no arquivo pode ler e escrever uma variável global. Isso as torna convenientes, mas fáceis de usar incorretamente.
#include <stdio.h>
int score = 100;
void penalty(void) { score -= 25; }
void bonus(void) { score += 10; }
int main(void) {
penalty();
bonus();
printf("score = %d\n", score);
return 0;
}Inicialização com zero por padrão
As variáveis globais sem inicializador começam automaticamente com 0.
#include <stdio.h>
int total;
int main(void) {
printf("total = %d\n", total);
return 0;
}A palavra-chave externa
extern declara uma variável global que é definida em outro lugar. Ela informa ao compilador que a variável existe, sem alocar espaço para ela.
#include <stdio.h>
int shared = 5;
extern int shared;
int main(void) {
printf("shared = %d\n", shared);
return 0;
}Declaração e definição
Uma definição aloca armazenamento. Uma declaração apenas dá nome a algo. As declarações extern não alocam armazenamento.
#include <stdio.h>
int value = 42;
int main(void) {
extern int value;
printf("value = %d\n", value);
return 0;
}Compartilhamento entre arquivos
Em projetos com vários arquivos, um arquivo .c define a variável global, e os outros arquivos usam extern em um arquivo de cabeçalho para acessá-la.
#include <stdio.h>
extern int globalCount;
int globalCount = 3;
int main(void) {
printf("globalCount = %d\n", globalCount);
return 0;
}As funções também podem ser externas
Por padrão, as funções têm ligação externa, portanto um protótipo é, na prática, uma declaração extern dessa função.
#include <stdio.h>
extern void hello(void);
void hello(void) {
printf("Hello from extern\n");
}
int main(void) {
hello();
return 0;
}Tempo de vida global
As variáveis globais existem do início ao fim do programa, portanto seus valores persistem durante todas as chamadas de função.
#include <stdio.h>
int visits = 0;
void page(void) { visits++; }
int main(void) {
page();
page();
page();
printf("visits = %d\n", visits);
return 0;
}Riscos das variáveis globais
Como qualquer código pode alterar uma variável global, fica difícil rastrear os erros. Quando possível, prefira passar os valores como parâmetros.
#include <stdio.h>
int config = 1;
int compute(int input) {
return input * config;
}
int main(void) {
printf("%d\n", compute(8));
return 0;
}Variáveis globais somente para leitura
Combine const com uma variável global para criar uma constante compartilhada que ninguém pode modificar.
#include <stdio.h>
const int MAX_USERS = 50;
int main(void) {
printf("MAX_USERS = %d\n", MAX_USERS);
return 0;
}Padrão prático
Um valor de configuração global lido por várias funções é um uso comum e aceitável.
#include <stdio.h>
int multiplier = 3;
int scale(int x) { return x * multiplier; }
int main(void) {
printf("%d\n", scale(4));
printf("%d\n", scale(7));
return 0;
}Verificação rápida
Verifique sua compreensão sobre extern e as variáveis globais.
Recapitulação: declaração externa e variável global
Você aprendeu sobre variáveis globais e ligação externa.
- As variáveis globais têm escopo de arquivo e tempo de vida igual ao do programa
- Começam com 0 por padrão e são compartilhadas por todas as funções
externdeclara uma variável global definida em outro lugar- A definição aloca armazenamento; a declaração apenas dá nome
- Use variáveis globais com moderação para evitar acoplamento oculto
Perguntas Frequentes
A aula “extern e global” é grátis?
Sim — o texto completo de “extern e global” é 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 C Academy, atualize para CoddyKit PRO. O curso de C Academy inclui 4 aulas no total.
O que vou aprender em “extern e global”?
Compartilhamento entre arquivos. Você pratica C 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 C Academy?
Nenhuma experiência prévia é necessária. C 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 “extern e global”?
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 C Academy?
Sim. Cada aula de C 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
- auto e escopo local
- Variáveis static
- extern e global
- register e const