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?
Its not an error in some compiler but try compiling the same in GCC compiler and you should see at least a warning.
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.
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.