palabra clave estática en C++
I. Estatización en diseño orientado a procesos
1. Variables globales estáticas
Agregue la palabra clave static delante de la variable global y la variable queda definida. Es una variable global estática. Veamos primero un ejemplo de una variable global estática:
//Ejemplo 1
#include
void fn();
static int n; //definir variable global estática
void main()
{ n=20; < fn(); } { n++; p> } Compile y ejecute el Ejemplo 2. Encontrará que los códigos anteriores se compilan respectivamente, pero se producen errores durante la ejecución. Intente cambiar static int n; //definir variable global estática a int n; //definir variable global Compile y ejecute el programa nuevamente para comprender la diferencia entre variables globales y variables globales estáticas. 2. Variables locales estáticas Agregue la palabra clave static antes de una variable local y la variable se define como una variable local estática. Veamos primero un ejemplo de variables locales estáticas: //Ejemplo 3 #include void fn(); void main() { fn(); fn(); fn(); } void fn() { static int n=10 cout< p> n++; } Normalmente, una variable se define en el cuerpo de la función y se asigna memoria de pila para la variable local cuando el programa alcanza la declaración. Pero cuando el programa sale del cuerpo de la función, el sistema recuperará la memoria de la pila y las variables locales caducarán en consecuencia. Pero a veces necesitamos guardar el valor de una variable entre llamadas. La idea habitual es definir una variable global para lograrlo. Pero de esta forma las variables ya no pertenecen a la función en sí, ni son controladas individualmente por la función, lo que trae inconvenientes al mantenimiento del programa. Las variables locales estáticas solucionan este problema. Las variables locales estáticas se almacenan en el área de datos globales en lugar de en la pila, y sus valores se conservan hasta la próxima llamada hasta la próxima vez que se asigne un nuevo valor. Las variables locales estáticas tienen las siguientes características: Las variables asignan memoria en el área de datos globales; Las variables locales estáticas se inicializan por primera vez cuando el programa se ejecuta según la declaración del objeto, es decir, ya no se inicializará en llamadas de función posteriores; Las variables locales estáticas generalmente se inicializan cuando se declaran. Si no se inicializan explícitamente, se inicializan automáticamente a 0; Siempre reside en el área de datos globales hasta el final de la ejecución del programa. Pero su alcance es un alcance local. Cuando finaliza su definición de función o bloque de declaración, su alcance también finaliza; 3 Funciones estáticas En funciones, la palabra clave estática se agrega antes del retorno. tipo, y la función se define como una función estática. Una función estática se diferencia de una función ordinaria en que solo puede ser visible en el archivo en el que está declarada y no puede ser utilizada por otros archivos. Ejemplo de función estática: //Ejemplo 4 #include static void fn();/ /Declarar función estática void main() { fn( ); } void fn()/ / Definir función estática { int n=10; cout< } Beneficios de definir funciones estáticas: Las funciones estáticas no pueden ser utilizadas por otros archivos; Las funciones estáticas no pueden ser utilizadas por otros archivos; Funciones estáticas en otros archivos No disponible. p> Las funciones con el mismo nombre se pueden definir en otros archivos sin conflicto;