extern y global
Compartición entre archivos
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
externdeclara 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
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
- auto y ámbito local
- Variables static
- extern y global
- register y const