elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda sobre el ambito de las variables automaticas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre el ambito de las variables automaticas  (Leído 2,742 veces)
Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Duda sobre el ambito de las variables automaticas
« en: 6 Octubre 2012, 12:30 pm »

el ambito de una variable una variable automatica puede ser menor que una funcion? una instruccion por ejemplo:
Código
  1. for (auto int i = 5; i < count; ++i)
  2. {
  3. /* code */
  4. }

Es decir, que el valor 5 para la variable solo valga para este bucle, no se si me explico, es que en el libro que estoy leyendo dice que si pero no da ningun ejemplo sobre como se puede utilizar de esta manera.

Saludos


En línea

overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
Re: Duda sobre el ambito de las variables automaticas
« Respuesta #1 en: 6 Octubre 2012, 13:23 pm »

el ambito de una variable una variable automatica puede ser menor que una funcion? una instruccion por ejemplo:
Código
  1. for (auto int i = 5; i < count; ++i)
  2. {
  3. /* code */
  4. }

Es decir, que el valor 5 para la variable solo valga para este bucle, no se si me explico, es que en el libro que estoy leyendo dice que si pero no da ningun ejemplo sobre como se puede utilizar de esta manera.

Saludos

http://c.conclase.net/curso/?cap=025

Ese modificador es aplicado por defecto si no se especifica ningún otro y si, es el correspondiente a todas las variables locales así que éstas desaparecen con la finalización del bloque.


En línea

[/url]
Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Duda sobre el ambito de las variables automaticas
« Respuesta #2 en: 6 Octubre 2012, 14:06 pm »

Y se podria utilizar otro?, asi por ejemplo:

Código
  1. for (static int i = 0; i < count; ++i)
  2. {
  3. /* code */
  4. }
En línea

overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
Re: Duda sobre el ambito de las variables automaticas
« Respuesta #3 en: 6 Octubre 2012, 15:03 pm »

Y se podria utilizar otro?, asi por ejemplo:

Código
  1. for (static int i = 0; i < count; ++i)
  2. {
  3. /* code */
  4. }

Claro, con static estarías "aumentando" el ámbito de la variable.
En línea

[/url]
Caster


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Duda sobre el ambito de las variables automaticas
« Respuesta #4 en: 6 Octubre 2012, 15:13 pm »

Muchas gracias por responder  :D

Saludos.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda sobre el ambito de las variables automaticas
« Respuesta #5 en: 6 Octubre 2012, 18:00 pm »

el ambito de una variable una variable automatica puede ser menor que una funcion? una instruccion por ejemplo:
Código
  1. for (auto int i = 5; i < count; ++i)
  2. {
  3. /* code */
  4. }

Es decir, que el valor 5 para la variable solo valga para este bucle
Correcto. El ámbito o alcance de una variable declarada dentro un bloque inicia justo después de su declaración y continua hasta el termino de este (del bloque).

Y se podria utilizar otro?, asi por ejemplo:

Código
  1. for (static int i = 0; i < count; ++i)
  2. {
  3. /* code */
  4. }
No.


Primero porque en C99 y C11 es posible declarar variables locales a los bucles "for" pero solo pueden incluir los calificadores "register" y "auto", utilizar (como en tu caso) "static" no es valido.


Segundo porque "static" no afecta el alcance de una variable sino su tipo de almacenamiento (en buen cristiano: la duración o "vida" de la variable):

* Las variables automáticas se crean justo en su declaración y desaparecen al terminar su ámbito (el bloque al que pertenecen).

* Las variables estáticas se crean, conceptualmente, justo antes de iniciar el programa y se inicializan con el valor indicado (si no existe su valor inicial es 0, 0.0 o NULL dependiendo del caso). Ellas desaparecen justo antes de terminar la aplicación.

Un programa de ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void f(void);
  5. void g(void);
  6.  
  7. int main(void)
  8. {
  9.   int i;
  10.  
  11.   for (i = 0; i < 5; i++)
  12.      f();
  13.  
  14.   puts("----");
  15.  
  16.   for (i = 0; i < 5; i++)
  17.      g();
  18.  
  19.   return EXIT_SUCCESS;
  20. }
  21.  
  22. void f(void)
  23. {
  24.   int i = 100;
  25.  
  26.   printf("%d\n", i);
  27.   i++;
  28. }
  29.  
  30. void g(void)
  31. {
  32.   static int i = 200;
  33.  
  34.   printf("%d\n", i);
  35.   i++;
  36. }

Y su salida es:
Código:
100
100
100
100
100
----
200
201
202
203
204

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda Basica Sobre Variables en "Sub" (vb.net)
.NET (C#, VB.NET, ASP)
Skeletron 4 3,578 Último mensaje 7 Abril 2009, 03:03 am
por miloscorp
[BATCH] Duda sobre variables tipo %X:~0,1%
Scripting
8789poli 4 3,207 Último mensaje 24 Mayo 2009, 01:19 am
por leogtz
[Duda Python+TK] Sobre variables y funciones
Scripting
xassiz_ 3 3,871 Último mensaje 4 Marzo 2010, 21:21 pm
por xassiz_
No entiendo el ambito de las variables en javascript
Desarrollo Web
Aikanáro Anário 2 2,540 Último mensaje 8 Junio 2012, 20:32 pm
por Aikanáro Anário
[SOLUCIONADO] Ayuda: Node.js ambito de variables
Desarrollo Web
patilanz 5 3,756 Último mensaje 29 Noviembre 2017, 05:32 am
por Luis Leon B
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines