Notas de estudio de C: declaración, definición, inicialización

declaración

especificador + lista de expresiones

int a;
char j, k l;

definición

En general, llamamos definición a la declaración que crea un espacio y declaración a la declaración que no necesita crear un espacio de almacenamiento.

int tern = 1; //定义

int main() {
    
    
	int a; //也是定义,因为建立了存储空间
	extern int tern; // 声明定义在别处的变量,仅仅是声明,没有建立空间
}

tern se declara dos veces,
la primera declaración reserva espacio de almacenamiento para la variable y constituye la definición. se llama una declaración de definición.
La segunda declaración solo usa la variable anterior, pero no se crea ningún espacio, por lo que es solo una declaración.

La palabra clave extern solo se puede declarar, no definir.

inicialización

Inicialización de variables: después de declarar o definir la variable, el proceso de asignación de un valor inicial es la inicialización de la variable.

La diferencia entre definición e inicialización.

int a; //只是定义也是声明,但是并没有给初始值,所以不是初始化。
int a = 4; //既是定义又是初始化。
extern int a; //仅仅是声明。

Por supuesto, la definición y la inicialización también se pueden separar.

int b; //声明/定义 变量
b = 2//初始化变量

inicialización de variables estáticas

Las variables estáticas se inicializan con un valor de 0 por defecto.
Cuando el programa ejecutable se carga en la memoria, la ubicación del valor correcto se ha guardado y el valor se asignará a la variable.
No se requiere tiempo ni instrucciones adicionales para completar esta tarea, y las variables estáticas se inicializarán.

inicialización automática de variables

Las variables automáticas no se inicializan a 0.
El programa no puede determinar la ubicación de almacenamiento de las variables automáticas en el momento del enlace, porque las variables locales pueden ocupar diferentes ubicaciones cada vez que se llama a una función. Entonces, las variables automáticas usan más gastos generales.

  1. La inicialización y la declaración y luego la asignación de variables automáticas tienen la misma eficiencia y ninguna diferencia.
  2. Las variables estáticas solo se inicializan una vez cada vez que se ejecuta el programa, mientras que las variables automáticas se inicializan una vez cada vez que se ejecuta la función.
  3. Debido a que la inicialización automática de variables se realiza en tiempo de ejecución, puede inicializarla con variables y las variables estáticas no se pueden inicializar con variables.
    int a = 4;
    int b = a + 3;
    //static int c = a + 4; 编译报错
    
  4. Se recomienda inicializar las variables automáticas, o asegurarse de que estén asignadas antes de su uso, de lo contrario tendrá un valor basura inesperado.

Supongo que te gusta

Origin blog.csdn.net/chongbin007/article/details/129034719
Recomendado
Clasificación