최근 C에서 범위 규칙을 읽었습니다. 지역 변수 또는 자동 변수는 선언 된 함수 블록 내에서만 사용할 수 있다고합니다. 함수 밖에서는 더 이상 볼 수 없습니다. 또한 수명은 함수 본문의 마지막 닫기 중괄호 끝까지입니다.범위 규칙 C
이제 여기에 문제가 있습니다. 지역 변수의 주소가 함수에서 호출 함수로 반환되면 어떻게됩니까? 예를 들어
: - 다시 기능 재미에서 제어가 반환 한 번
main()
{
int *p=fun();
}
int * fun()
{
int localvar=0;
return (&localvar);
}
는 변수 지역 변수를 더 이상 살아 없습니다. 그러면 주관사가이 주소의 콘텐츠에 어떻게 액세스 할 수 있습니까?
'main'을 포함한 모든 함수에서 명시 적 리턴 유형을 사용하십시오. 따라서 :'int main (void)'. –
* 머리 스크래치 *. 실용적으로, 당신은 그 주소를 돌려 보내지 않을 것입니다. localvar에 있던 값을 반환 할 것입니다.이 경우, 함수 선언이 잘못되었습니다 ('int'가 아닌'int'를 반환해야하므로). – JayC
[로컬 변수의 메모리를 범위 외부에서 액세스 할 수 있습니까?] (http://stackoverflow.com/questions/6441218/can-a-local-variables-memory-be-accessed-outside-its-scope) –