out of scope variable running well!!!

shyam_oec's Avatar, Join Date: Nov 2007
Contributor
int *dangle(int num)
{
int temp=5;
return(&temp);
}

void main()
{

int *iptr,deng=56;

iptr=dangle(deng);
printf("%d",*iptr);
}

I read that this code is not correct,since iptr is being assigned address of a
variable which losses it's scope when control reaches back to main,i.e temp variable
is lost.
BUT when i compiled and ran this code it produced no error,rather it gave output
5!!!.here every thing seems all right,then why it has been said that it's wrong?
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Its not an error in some compiler but try compiling the same in GCC compiler and you should see at least a warning.
shyam_oec's Avatar, Join Date: Nov 2007
Contributor
then what will be the most appropiate answer if this question is asked in exam?In book
i have read it's wrong but actual compilation works well..plz give a solid answer.that what
is happening.
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
The address which you are passing is not overwritten. Try giving a printf() or call some other function before printing the output and share your output.