Diferencia entre revisiones de «static»
De ArduWiki
(→Vea también) |
(→Vea también) |
||
(No se muestran 17 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
== Descripción == | == Descripción == | ||
− | + | Palabra clave conocida como '''calificadora'''. Se usa antes del tipo de datos de una variable, para modificar la manera en que el compilador y el [[boceto]] deben tratar dicha variable. | |
+ | |||
+ | Se usa para crear variables que solo son visibles dentro de una función. Sin embargo a diferencia de las variables locales que se crean y destruyen cada vez que se invoca una función, las variables '''static''' persisten más allá de la llamada a la función, preservan sus datos entre llamadas a funciones. | ||
{{Nota|Las variables declaradas como '''static''' sólo se crean e inicializan la primera vez que una función se llama.}} | {{Nota|Las variables declaradas como '''static''' sólo se crean e inicializan la primera vez que una función se llama.}} | ||
Línea 6: | Línea 8: | ||
== Sintaxis == | == Sintaxis == | ||
<pre> | <pre> | ||
− | static tipo variable [= valor] | + | static [tipo] variable [= valor]; |
− | |||
</pre> | </pre> | ||
== Parámetros == | == Parámetros == | ||
− | ;tipo: tipo de dato. Puede ser [[char]], [[byte]]; [[int]], [[long]], [[float]], etc | + | ;tipo: tipo de dato. Puede ser [[char]], [[byte]]; [[int]], [[long]], [[float]], etc de forma explicita u incluir un subfijo en '''valor''' |
+ | |||
{| class="wikitable col2cen" | {| class="wikitable col2cen" | ||
− | |+ | + | |+Subfijos |
!Tipo!!Subfijo!!Ejemplo | !Tipo!!Subfijo!!Ejemplo | ||
|- | |- | ||
Línea 27: | Línea 29: | ||
|} | |} | ||
− | ;variable: nombre de la variable a declarar. | + | ;variable:nombre de la variable a declarar. |
− | ;valor: valor a almacenar en el rango del tipo de dato. | + | ;valor:valor a almacenar en el rango del tipo de dato. Puede especificar la '''base''' del dato usando un prefijo. |
− | |||
{| class="wikitable col2cen" | {| class="wikitable col2cen" | ||
− | |+ | + | |+Prefijos |
!Base!!Prefijo!!Comentario!!Ejemplo | !Base!!Prefijo!!Comentario!!Ejemplo | ||
|- | |- | ||
Línea 46: | Línea 47: | ||
== Retorno == | == Retorno == | ||
Nada. | Nada. | ||
+ | |||
+ | == Comentarios == | ||
+ | * Todas las variables son almacenadas en [[SRAM]] salvo [[const]]. | ||
== Advertencias == | == Advertencias == | ||
− | + | * Solo son visibles dentro de la función donde fueron creadas. | |
+ | * A diferencia de una [[variable local]] que se destruyen al finalizar la función, las variables '''static''' sobreviven a la función y mantienen su valor en la próxima llamada a dicha función. | ||
== Ejemplo == | == Ejemplo == | ||
Línea 78: | Línea 83: | ||
== Vea también == | == Vea también == | ||
+ | * [[variable publica]] | ||
+ | * [[variable local]] | ||
+ | * [[matriz]] | ||
* [[volatile]] | * [[volatile]] | ||
* [[const]] | * [[const]] | ||
− | * [[ | + | * [[include|#include]] |
− | * [[ | + | * [[define|#define]] |
+ | * [[Comentarios]] - <nowiki>(//)</nowiki> | ||
== Referencias == | == Referencias == | ||
− | * [https://www.arduino.cc/reference/en/language/variables/variable-scope--qualifiers/static/ Guia de referencia | + | * [https://www.arduino.cc/reference/en/language/variables/variable-scope--qualifiers/static/ Guia de referencia] |
[[Category:Variables]] | [[Category:Variables]] |
Revisión actual del 04:21 2 feb 2020
Contenido
Descripción
Palabra clave conocida como calificadora. Se usa antes del tipo de datos de una variable, para modificar la manera en que el compilador y el boceto deben tratar dicha variable.
Se usa para crear variables que solo son visibles dentro de una función. Sin embargo a diferencia de las variables locales que se crean y destruyen cada vez que se invoca una función, las variables static persisten más allá de la llamada a la función, preservan sus datos entre llamadas a funciones.
Nota: Las variables declaradas como static sólo se crean e inicializan la primera vez que una función se llama.
Sintaxis
static [tipo] variable [= valor];
Parámetros
- tipo
- tipo de dato. Puede ser char, byte; int, long, float, etc de forma explicita u incluir un subfijo en valor
Tipo | Subfijo | Ejemplo |
---|---|---|
int | ninguno | 123 |
unsigned int | U | 123U |
long | L | 123L |
unsigned long | UL | 123UL |
float | F | 1.23F |
- variable
- nombre de la variable a declarar.
- valor
- valor a almacenar en el rango del tipo de dato. Puede especificar la base del dato usando un prefijo.
Base | Prefijo | Comentario | Ejemplo |
---|---|---|---|
DEC | ninguno | Dígitos 0~9 | 123 |
HEX | 0x | dígitos 0~9 + Caracteres A~F | 0x7B |
OCT | 0 | digitos 0~7 | 0173 |
BIN | B | 0 o 1 | B1110011 |
Retorno
Nada.
Comentarios
Advertencias
- Solo son visibles dentro de la función donde fueron creadas.
- A diferencia de una variable local que se destruyen al finalizar la función, las variables static sobreviven a la función y mantienen su valor en la próxima llamada a dicha función.
Ejemplo
const byte alto = 20;
const char bajo = -20;
const byte paso = 5; //Tamaño de paso
void setup(){
Serial.begin(115200);
}
void loop(){
static int posicion;
int hoy = camino(paso);
Serial.println(hoy);
delay(10);
}
int camino(byte mover){
posicion += random(-mover, mover + 1);
if (posicion < bajo){ //Comprueba los límites alto y bajo
posicion = alto; //Refleja el número de vuelta en dirección negativa
}else if(posicion > alto){
posicion = bajo; //Refleja el número de vuelta en dirección positiva
}
return posicion;
}