(void가 아닌) 함수를 호출했지만 반환 값을 변수에 할당하지 않으면 어떻게됩니까? 예 : getchar();함수 반환 값이 변수에 지정되지 않았습니다.
저는 언제나 그런 가치에 어떤 일이 일어 났는지 궁금합니다. 나는 "에테르가 사라진 것"과 같은 유머러스 한 설명을 들었다. 그러나 나는 정말로 알고 싶어한다. 그런 가치를 되 찾을 수있는 방법이 있을까요? 감사합니다.
(void가 아닌) 함수를 호출했지만 반환 값을 변수에 할당하지 않으면 어떻게됩니까? 예 : getchar();함수 반환 값이 변수에 지정되지 않았습니다.
저는 언제나 그런 가치에 어떤 일이 일어 났는지 궁금합니다. 나는 "에테르가 사라진 것"과 같은 유머러스 한 설명을 들었다. 그러나 나는 정말로 알고 싶어한다. 그런 가치를 되 찾을 수있는 방법이 있을까요? 감사합니다.
아니요, 그렇지 않습니다.
값이 스택에서 팝되어 사라졌습니다.
반환 값이 필요한 경우 변수에 할당해야합니다.
대부분의 호출 규칙은 반환 값에 대해 레지스터를 사용합니다. 그래서 아무 것도 스택에 나타나지 않습니다. –
단순히 '반환'(암시 적으로 반환 자체를 호출하거나 전혀 반환하지 않음)이며 값을 할당하지 않으면 값이 지정되지 않으므로 null
입니다.
이것은 실제로 컴파일러/CPU와 관련이 있지만, 대부분의 경우 반환 값은 CPU 레지스터에 있습니다 (적합 할 경우). 그러면 해당 레지스터가 후속 코드에서 처리되지 않으면 예를 들어를 사용하여 검색 할 수 있습니다. "인라인 어셈블러".
귀하의 질문에 더 잘 답하기 위해 아무런 가치가 없습니다. 스택 위치 또는 레지스터 내부에 위치합니다. 당신이 그것을 사용한다면, 괜 찮 아 ... 그렇지 않다면 아무 일도 일어나지 않습니다. 결국 스택이나 레지스터는 ... 새 값을 덮어 씁니다
당신이 어떻게 모든 작품이 볼 수에 대한 자세한 내용을 원한다면 : http://en.wikipedia.org/wiki/Call_stack
어떤 언어로를? – SLaks