Pregunta

Duplicar posibles:
¿Qué significa “estática” significa en un programa en C?

¿Qué significa la palabra clave static en C?

Estoy usando ANSI-C. Yo he visto en varios ejemplos de código, que utilizan la palabra clave static delante de variables y en frente de las funciones. ¿Cuál es el propósito en caso de usarse con una variable? Y ¿cuál es el propósito en caso de usarse con una función?

¿Fue útil?

Solución

Al igual que una breve respuesta, hay dos usos de la palabra clave static la hora de definir las variables:

1- Las variables definidas en el ámbito de archivo con la palabra clave static, es decir. funciones externas definidas será visible sólo dentro de ese archivo. Cualquier intento de acceso a ellos desde otros archivos resultará en símbolo sin resolver en tiempo de enlace.

2- variables definidas como static dentro de un bloque dentro de una función persistirá o "sobrevivir" a través de diferentes invocaciones del mismo bloque de código. Si se definen inicializan, a continuación, se inicializan sólo una vez. las variables static suelen ser garantizados para ser inicializado a 0 por defecto.

Otros consejos

static dentro del cuerpo de una función, es decir, se utiliza como un clasificador de almacenamiento de variables hace que esa variable para retener su valor entre llamadas a funciones - uno bien podría decir, que una variable estática dentro de una función es variable global visible sólo a esa función. Este uso de static siempre hace que la función que se usa en hilo de insegura se debe evitar.

El otro caso de uso está utilizando static sobre el alcance global, es decir, para las variables y funciones globales: funciones estáticas y variable global son locales a la unidad de compilación, es decir, que no muestran en la tabla de exportación del objeto binario compilado . De este modo, no contaminan el espacio de nombres. Declarando estática todas las funciones y variables globales no ser accesible desde fuera de la unidad de compilación (es decir, C archivo) en cuestión es una buena idea! Sólo ten en cuenta que las variables estáticas no deben ser colocados en los archivos de cabecera (salvo casos especiales i muy raros).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top