sentido
Posible duplicado:
¿Qué significa “estático” en un programa C?
Lo que hace el static
palabra clave significa en C?
Estoy usando ANSI-C. Lo he visto en varios ejemplos de código, usan el static
palabra clave delante de variables y delante de funciones. ¿Cuál es el propósito en caso de usar con una variable? ¿Y cuál es el propósito en caso de usar con una función?
molestia de roux
Solo como una breve respuesta, hay dos usos para el static
palabra clave al definir variables:
1- Variables definidas en el ámbito del archivo con static
palabra clave, es decir las funciones externas definidas serán visibles solo dentro de ese archivo. Cualquier intento de acceder a ellos desde otros archivos resultará en un símbolo sin resolver en el momento del 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 como inicializados, se inicializan solo una vez. static
generalmente se garantiza que las variables se inicializarán a 0
por defecto.
-
Respecto a 1: la estática también se puede aplicar a las funciones, ocultándolas también al exterior.
– datenwolf
2 de enero de 2011 a las 22:19
-
Se ha dicho en otras encarnaciones de esta pregunta, pero para aquellos que provienen de Google, estrictamente hablando, 1 se aplica a las unidades de compilación, no a los archivos.
– Jared
9 de noviembre de 2013 a las 6:36
-
@Roux hass: “Si se definen inicializados” ¿Qué significa eso? ¿Si se inicializan con un valor distinto de cero al definirse?
– Montana Burr
4 de diciembre de 2015 a las 7:20
lobo de fecha
static
dentro del cuerpo de una función, es decir, utilizado como un clasificador de almacenamiento de variables, hace que esa variable conserve su valor entre las llamadas a la función; bien se podría decir que una variable estática dentro de una función es una variable global visible solo para esa función. Este uso de static
siempre hace la función que se usa en hilo inseguro deberías evitarlo.
El otro caso de uso es usar static
en el ámbito global, es decir, para variables y funciones globales: las funciones estáticas y las variables globales son locales para la unidad de compilación, es decir, no aparecen en la tabla de exportación del objeto binario compilado. Por lo tanto, no contaminan el espacio de nombres. ¡Es una buena idea declarar estáticas todas las funciones y variables globales para que no sean accesibles desde fuera de la unidad de compilación (es decir, el archivo C) en cuestión! Solo tenga en cuenta que las variables estáticas no deben colocarse en los archivos de encabezado (excepto en casos especiales muy raros).
Lo hice, pero es difícil entender el propósito exacto. Podía entender poco sobre el uso con variables. pero usar con la función?
– Sentido
2 de enero de 2011 a las 1:06
encontraste esto: stackoverflow.com/questions/572547/…
– Trigo Mitch
2 de enero de 2011 a las 1:07
…o esto: stackoverflow.com/questions/943280/…
– Trigo Mitch
2 de enero de 2011 a las 1:08