C Academy · Lección

extern y global

Compartición entre archivos

Lección 3 de 413 pasos

extern y global es una lección gratuita de C Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C Academy incluye 4 lecciones en total.

Variables globales

Una variable declarada fuera de cualquier función tiene ámbito de archivo y vive durante todo el programa. Es una variable global.

#include <stdio.h>
int counter = 0;
void bump(void) {
    counter++;
}
int main(void) {
    bump();
    bump();
    printf("counter = %d\n", counter);
    return 0;
}

Las variables globales son compartidas

Todas las funciones del archivo pueden leer y escribir una variable global. Esto las hace prácticas, pero fáciles de utilizar incorrectamente.

#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;
}

Inicialización predeterminada con cero

Las variables globales sin inicializador comienzan automáticamente en 0.

#include <stdio.h>
int total;
int main(void) {
    printf("total = %d\n", total);
    return 0;
}

La palabra clave extern

extern declara una variable global que está definida en otro lugar. Indica al compilador que la variable existe sin asignarle almacenamiento.

#include <stdio.h>
int shared = 5;
extern int shared;
int main(void) {
    printf("shared = %d\n", shared);
    return 0;
}

Declaración frente a definición

Una definición asigna almacenamiento. Una declaración solo da nombre a algo. Las declaraciones extern no asignan almacenamiento.

#include <stdio.h>
int value = 42;
int main(void) {
    extern int value;
    printf("value = %d\n", value);
    return 0;
}

Compartir entre archivos

En proyectos con varios archivos, un archivo .c define la variable global y los demás utilizan extern en un archivo de cabecera para verla.

#include <stdio.h>
extern int globalCount;
int globalCount = 3;
int main(void) {
    printf("globalCount = %d\n", globalCount);
    return 0;
}

Las funciones también pueden ser extern

Las funciones tienen enlace externo de forma predeterminada, por lo que un prototipo es, en la práctica, una declaración extern de esa función.

#include <stdio.h>
extern void hello(void);
void hello(void) {
    printf("Hello from extern\n");
}
int main(void) {
    hello();
    return 0;
}

Duración de las variables globales

Las variables globales existen desde el inicio hasta el final del programa, por lo que sus valores persisten entre todas las llamadas a funciones.

#include <stdio.h>
int visits = 0;
void page(void) { visits++; }
int main(void) {
    page();
    page();
    page();
    printf("visits = %d\n", visits);
    return 0;
}

Riesgos de las variables globales

Como cualquier parte del código puede cambiar una variable global, resulta difícil rastrear los errores. Siempre que sea posible, prefiera pasar los 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;
}

Variables globales de solo lectura

Combine const con una variable global para crear una constante compartida que nadie pueda modificar.

#include <stdio.h>
const int MAX_USERS = 50;
int main(void) {
    printf("MAX_USERS = %d\n", MAX_USERS);
    return 0;
}

Patrón práctico

Un valor de configuración global que leen varias funciones es un uso habitual y aceptable.

#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;
}

Comprobación rápida

Compruebe su comprensión de extern y de las variables globales.

Repaso: extern y globales

Ha aprendido sobre las variables globales y el enlace externo.

  • Las variables globales tienen ámbito de archivo y duración de programa
  • Su valor predeterminado es 0 y todas las funciones las comparten
  • extern declara una variable global definida en otro lugar
  • La definición asigna almacenamiento; la declaración solo da nombre
  • Utilice las variables globales con moderación para evitar acoplamientos ocultos
Gratis para empezar

Aprende C con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
39
Lecciones
144

Preguntas frecuentes

¿La lección «extern y global» es gratis?

Sí — el texto completo de «extern y global» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C Academy, actualiza a CoddyKit PRO. El curso de C Academy incluye 4 lecciones en total.

¿Qué aprenderé en «extern y global»?

Compartición entre archivos Practicas C Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C Academy?

No se requiere experiencia previa. C Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «extern y global»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C Academy?

Sí. Cada lección de C Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. auto y ámbito local
  2. Variables static
  3. extern y global
  4. register y const
← Volver a C Academy