Ejemplos EjemplosTema Tema11:: Variables VariablesEstáticas Estáticas Fundamentos de Informática 1º Ingeniería Industrial Escuela Superior de Ingenieros Universidad de Sevilla José Ángel Acosta Rodríguez Fernando Dorado Navas Fabio Gómez Estern-Aguilar Manuel López Martínez Amparo Núñez Reyes Carlos Vivas Venegas Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria Pantalla Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t ? Pantalla Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t ? Pantalla Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t ? termino Pantalla 3 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t ? razon 5 termino 3 Pantalla Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t ? razon 5 termino 3 Pantalla Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t ? razon 5 termino 8 Pantalla Ejemplo Ejemplo: :Variables Variablesestáticas estáticas Memoria ? #include<stdio.h> t int progresion(void); razon void main(void) { int t; t=progresion(); termino printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); Pantalla } int progresion(void) Las variables estáticas { no se destruyen, static int termino=3; conservan su valor int razon=5; entre llamadas termino+=razon; return termino; } 5 8 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 8 termino Pantalla 8 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 8 termino Pantalla primer termino 8 8 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 8 termino Pantalla primer termino 8 8 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas Memoria 8 #include<stdio.h> t int progresion(void); void main(void) { int t; t=progresion(); termino printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); Pantalla } int progresion(void) En la siguiente llamada a la función,8 primer termino { la variable estática recupera su static int termino=3; vigencia. int razon=5; La inicialización sólo tiene efecto en termino+=razon; la primera llamada return termino; } 8 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 8 termino 8 razon 5 Pantalla primer termino 8 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 8 termino 8 razon 5 Pantalla primer termino 8 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 8 termino razon Pantalla primer termino 8 13 5 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 8 termino razon Pantalla primer termino 8 13 5 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 13 termino Pantalla primer termino 8 13 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 13 termino Pantalla primer termino 8 segundo termino 13 13 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 13 termino Pantalla primer termino 8 segundo termino 13 13 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 13 termino Pantalla primer termino 8 segundo termino 13 13 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t razon 13 5 termino Pantalla primer termino 8 segundo termino 13 13 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t razon 13 5 termino Pantalla primer termino 8 segundo termino 13 13 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t razon 13 5 termino Pantalla primer termino 8 segundo termino 13 18 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t razon 13 5 termino Pantalla primer termino 8 segundo termino 13 18 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 18 termino Pantalla primer termino 8 segundo termino 13 18 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 18 termino Pantalla primer termino 8 segundo termino 13 tercer termino 18 18 Ejemplo Ejemplo: :Variables Variablesestáticas estáticas #include<stdio.h> int progresion(void); void main(void) { int t; t=progresion(); printf(“primer termino %d\n”,t); t=progresion(); printf(“segundo termino %d\n”,t); t=progresion(); printf(“tercer termino %d\n”,t); } int progresion(void) FIN !! { static int termino=3; int razon=5; termino+=razon; return termino; } Memoria t 18 termino Pantalla primer termino 8 segundo termino 13 tercer termino 18 18