¿Qué significa estática en ANSI-C? [duplicate]

3 minutos de lectura

avatar de usuario
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?

  • 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

avatar de usuario
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

avatar de usuario
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).

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad