0Pricing
C Academy · Aula

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
  • extern declara 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

  1. auto e escopo local
  2. Variáveis static
  3. extern e global
  4. register e const
← Voltar para C Academy