Puntero colgante en C
Escribí un programa en C con puntero colgante.
#include<stdio.h>
int *func(void)
{
int num;
num = 100;
return #
}
int func1(void)
{
int x,y,z;
scanf("%d %d",&y,&z);
x=y+z;
return x;
}
int main(void)
{
int *a = func();
int b;
b = func1();
printf("%d\n",*a);
return 0;
}
Estoy obteniendo elsalida como 100 aunque el puntero esté colgando.
He realizado un solo cambio en la función anteriorfunc1()
. En lugar de tomar el valor dey
yz
desde la entrada estándar como en el programa anterior, ahora estoy asignando el valor durante el tiempo de compilación.
I redefiní lafunc1()
como sigue
int func1(void)
{
int x,y,z;
y=100;
z=100;
x=y+z;
return x;
}
Ahora eloutput es 200.
¿Puede alguien explicarme el motivo de las dos salidas anteriores?