Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Entendiendo las reglas de alcance en C: Variables locales, globales y formales

Un alcance en programación es una región donde una variable definida puede existir; más allá no puede accederse. En C, las variables pueden declararse en tres lugares:

Entendamos locales, globales y formales.

Variables Locales

Declaradas dentro de una función o bloque. Solo usadas por sentencias dentro de esa función/bloque. No conocidas por funciones externas. Ejemplo: a, b, c locales a main():

Demo en vivo
#include <stdio.h>
int main() {
    int a, b;
    int c;
    a = 10;
    b = 20;
    c = a + b;
    printf("valor de a = %d, b = %d y c = %d\n", a, b, c);
    return 0;
}

Variables Globales

Definidas fuera de funciones, usualmente al inicio. Mantienen valores durante toda la vida del programa y son accesibles desde cualquier función.

Una variable global puede ser accedida por cualquier función; disponible tras su declaración. Ejemplo:

Demo en vivo
#include <stdio.h>
/* declaración variable global */
int g;
int main() {
    int a, b;
    a = 10;
    b = 20;
    g = a + b;
    printf("valor de a = %d, b = %d y g = %d\n", a, b, g);
    return 0;
}

Un programa puede tener mismo nombre para local y global; la local tiene preferencia dentro de su función:

Demo en vivo
#include <stdio.h>
/* variable global */
int g = 20;
int main() {
    int g = 10; /* local */
    printf("valor de g = %d\n", g);
    return 0;
}

Resultado:

valor de g = 10

Parámetros Formales

Tratados como variables locales dentro de una función y tienen precedencia sobre globales. Ejemplo:

Demo en vivo
#include <stdio.h>
/* variable global */
int a = 20;
int main() {
    int a = 10; /* local en main */
    int b = 20;
    int c = 0;
    printf("valor de a en main() = %d\n", a);
    c = sum(a, b);
    printf("valor de c en main() = %d\n", c);
    return 0;
}
/* función para sumar dos enteros */
int sum(int a, int b) {
    printf("valor de a en sum() = %d\n", a);
    printf("valor de b en sum() = %d\n", b);
    return a + b;
}

Resultado:

valor de a en main() = 10
valor de a en sum() = 10
valor de b en sum() = 20
valor de c en main() = 30

Inicialización de variables locales y globales

Variable local: no inicializada por el sistema; tú debes inicializarla. Globales: inicializadas automáticamente al definirlas:

Tipo de DatoValor Inicial por Defecto
int0
char'\0'
float0
double0
punteroNULL

Buena práctica: inicializar variables apropiadamente; de lo contrario, valores basura en memoria pueden dar resultados inesperados.

Lenguaje C

  1. Reglas Clave para Circuitos en Serie: Corriente, Resistencia y Voltaje
  2. Fundamentos de Circuitos en Paralelo: Reglas de Voltaje, Resistencia y Corriente
  3. Reglas esenciales de derivadas: Referencia rápida
  4. Reglas fundamentales de antiderivadas: Constantes, sumas y diferencias
  5. Domine variables y tipos de datos primitivos en C#: Guía completa
  6. Entendiendo el ámbito de variables en C#: Nivel de clase, método y bloque
  7. Dominando Variables, Literales y Constantes en C++: Guía Completa
  8. Variables, constantes y literales en C: guía completa
  9. Entendiendo las clases de almacenamiento en C: ámbito, vida y rendimiento
  10. Comprender e imprimir timescales de Verilog en cualquier alcance
  11. Variables y Literales en Java: Guía Completa