포인터 반환 :내가이 예 가능성이 작동하는 방법을 이해하지 못하는
double * GetSalary() {
double salary = 26.48;
return &salary;
}
main() {
cout << *GetSalary(); //prints 26.48
}
salary
하는 GetSalary()
에서 지역 변수이며, 따라서 함수에서 반환 한 후,이 세포는 아마도 다른 기능에 의해 덮어 쓸 수 있습니다. (힙에 인스턴스화되지 않은) 로컬 변수에 대한 포인터를 반환하는 것이 어떻게 작동하는지 알 수 없습니다.
예, 덮어 쓸 수 있습니다. 그렇지 않을 수도 있습니다. 이것이 ** 보장 된 충돌이 아닌 ** 정의되지 않은 동작 **이라고 불리는 이유입니다. –
구글이 "포인터 형태의 함수를 반환"했을 때 obove 코드가 첫 번째 결과라는 사실은 우스운 일이다. – user695652
나는 종종 같은 것을 얻는다. Google 계정으로 SO에 로그인 할 때 Google이 검색 거품을 변경한다는 생각이 들었습니다. –