다음 코드를 고려하십시오.C- 함수가 로컬 변수에 대한 포인터를 반환합니다.
#include<stdio.h>
int *abc(); // this function returns a pointer of type int
int main()
{
int *ptr;
ptr = abc();
printf("%d", *ptr);
return 0;
}
int *abc()
{
int i = 45500, *p;
p = &i;
return p;
}
는 출력 :
45500
내가 link에 따라 알고 행동의이 유형은 정의되지 않습니다. 하지만 왜 내가 프로그램을 실행할 때마다 올바른 가치를 얻고 있는지.
정의되지 않은 동작이 허용됩니다. 그건 그렇고, 나는이 질문에 잘못된 것을 보지 못한다. Upvoted. – Bathsheba
프로그램이 매우 간단하기 때문입니다. 'abc()'와'printf() '호출 사이에 다른 함수 호출을 삽입 해보십시오. – Serge
그래서요? "정의되지 않음"은 "무작위"를 의미하지 않습니다 ... –