Entrada de lenguaje C al maestro C ++: función de entrada de lenguaje C (5)

Capítulo 7 Funciones

Sección 5 Variables locales y variables globales

Variable local

Las variables definidas dentro de una función se denominan variables locales, y solo son válidas dentro del alcance de esta función, es decir, solo pueden usarse
dentro de una función , y estas variables no pueden usarse fuera de la función

  • Las diferentes funciones pueden usar el mismo nombre de variable sin interferir entre sí (ver las direcciones de memoria no son las mismas)

  • El parámetro formal también es una variable local y solo es válido en la función correspondiente

#include <iostream>

void func1(int tmp) {
    // 无法使用main函数中定义的m,n,k
    // 这里能使用的变量是tmp,x,y
    int x, y;//局部变量
    int m, n;//和main函数中m,n不相同
    return;
}

int main() {
    // m.n,k这三个变量只在主函数中有效,虽然主函数调用了其他函数,但在其他函数中依旧无法使用主函数中的局部变量
    int m, n;
    int k = 4;

    return 0;
}
  • Una forma especial de escribir.
#include <iostream>

int main() {
    int a = 2, b = 3;
    {
        // 用大括号写一段代码,大括号扩起来的叫复合语句,
        // 在复合语句中定义的变量,这些变量只在本复合语句中有效
        // 复合语句也叫程序块
        int c;//有效范围只在符合语句内,一旦离开复合语句,变量c的内存就被系统释放了
        c = a + b;
    }
    return 0;
}

2. Variables globales

  • Definición: Las variables definidas fuera de la función se denominan variables globales (variables externas)

  • Las variables globales pueden ser compartidas por otras funciones en este archivo. El rango efectivo de variables globales comienza desde la posición donde la variable se define hasta el final del archivo de programa fuente.

  • En una función, puede usar tanto variables locales en esta función como variables globales válidas

Las ventajas y desventajas de las variables globales.

Ventajas:
  • Aumentó el canal de comunicación de datos entre funciones. Si una función cambia el valor de una variable global, puede afectar a otras funciones, lo que
    equivale a tener un canal de transmisión directa entre cada función. Parámetros para pasar parámetros
Desventajas
  • Use variables globales solo cuando sea necesario, porque las variables globales ocupan memoria durante todo el ciclo de ejecución del programa, a
    diferencia de las variables locales dentro de las funciones. La característica de las variables locales dentro de las funciones es que después de que se ejecuta la función, estas variables locales ocupan De la memoria será reclamada por el sistema

  • Se redujo la versatilidad de la función, ya que la ejecución de la función depende de estas variables globales externas. Si la función se migra a otro archivo,
    estas variables externas relacionadas deben migrarse juntas, y si migra a otro archivo También hay una variable global con el mismo nombre, luego hay un conflicto

  • La cantidad global reduce la claridad y la legibilidad del programa, y ​​es difícil para la persona que lee el programa juzgar el valor de cada variable externa (la función puede modificar el valor de la variable global)

#include <iostream>

int v_g = 100;//全局变量,在函数外定义的变量

int f1(int a) {
   v_g = 88;
   return 1;
}


char c1_g, c2_g;

char f2(int x, int y) {
   int i, j;
   return 0;
}

int main() {
   int v = 1;
   f1(v);
   printf("v_g in main : %d", v_g);
   return 0;
}

Explicación

  • Si una función quiere referirse a la variable global definida después de ella, puede usar una palabra clave llamada extern para hacer una descripción de la variable global externa,
    lo que indica que la variable se define fuera de la función. Por lo tanto, la variable global se coloca antes de todas las funciones. Omitir descripción de variable global

  • Distinga entre descripciones de variables externas y descripciones de variables externas: a) La definición de variables externas solo se puede definir una vez, la ubicación está fuera de todas las funciones, la memoria se asigna cuando se define
    y los valores se pueden inicializar cuando se definen, y puede haber muchas descripciones de variables externas en el mismo archivo Segundo, las variables externas indican que no se asigna memoria

#include <iostream>

extern int v_g;// 外部变量说明(不分配内存), 表示在某个地方定义了c1,c2
int f1(int a) {
    v_g = 88;
    return 1;
}

int v_g = 100;//全局变量,在函数外定义的变量


int main() {
    int v = 1;
    f1(v);
    printf("v_g in main : %d", v_g);
    return 0;
}
  • En el mismo archivo fuente, si la variable global y la variable local tienen el mismo nombre, la variable global no funciona dentro del alcance de la variable local
#include <iostream>

extern int v_g;// 外部变量说明(不分配内存), 表示在某个地方定义了c1,c2
int f1(int v_g) {
    v_g = 88;//这里v_g是局部变量,要注意,仔细考虑一下,调用v_g并不会改变全局的v_g
    return 1;
}

int v_g = 100;//全局变量,在函数外定义的变量


int main() {
    int v = 1;

    v_g = 3;
    printf("v_g in main : %d\n", v_g);
    
    {
        int v_g;
        v_g = 1;
        printf("v_g in {} : %d\n", v_g);
    }
    f1(v);
    printf("v_g in main after f1: %d", v_g);
    return 0;
}
Publicado 359 artículos originales · elogiado 248 · 660,000 vistas

Supongo que te gusta

Origin blog.csdn.net/Felaim/article/details/105666115
Recomendado
Clasificación