Gracias a ambos por la contestación.
Lo que no acabo de tender es esto, imaginemos el siguiente codigo:
int pon(void)
{
int i = 2;
return i;
}
void pon2(void)
{
char buffer[BUFSIZ];
int i = 0;
for(; i < BUFSIZ -1 ; i++)
buffer[i] = 'a';
}
int
main(int argc, char **argv)
{
int a = 3;
a = pon();
printf("%d\n", a);
pon2();
printf("%d\n", a);
return 0;
}
Segun lo que tengo entendido, al llamar la funcion
pon(), se pone en la pila sus parametros, la dirección de retorno y las variables automáticas.
Una vez se sale de la función, el espacio que se guardo para las variables de la función se libera, y entonces según esto no debería poder ver el valor de la variable "i", no?
Quiero decir, estoy devolviendo una variable que cuando salgo de la funcion, se "destruye". No logro comprender por qué puedo pasar su valor.
Llevo algunos días liado con esto, he leido algun que otro artículo acerca de como funciona el stack y creo entenderlo, pero no comprendo este comportamiento.
He intentado crear otra función con un poco mas de almacenamiento, para a ver si así dejaba de ver el valor de "i", pero no.
Muchas gracias de antemano