C에서는 참조가 더 이상 존재하지 않는 개체를 참조할 때 매달린 참조가 발생합니다. 참조를 사용하면 런타임 오류가 발생할 수 있습니다.
다음 코드 조각을 고려하세요.
int& bar() { int n = 10; return n; } int main() { int& i = bar(); cout << i << endl; return 0; }
이 코드는 bar() 함수 내에서 로컬 변수 n에 대한 참조를 반환합니다. 그러나 bar() 함수가 반환되면 지역 변수 n은 소멸되고 참조 i는 그대로 유지됩니다. i를 사용하려고 하면 런타임 오류가 발생합니다.
매달린 참조를 방지하려면 참조된 객체가 참조 수명 동안 유효한지 확인해야 합니다. 이는 정적 또는 전역 변수를 사용하여 달성할 수 있습니다.
int& bar() { static int n = 10; return n; } int main() { int& i = bar(); cout << i << endl; return 0; }
이 수정된 코드에서 n 변수는 bar() 내에서 정적 변수로 선언됩니다. 이렇게 하면 함수가 반환된 후에도 n이 유효한 상태로 유지됩니다. 결과적으로 i 참조도 유효하며 안전하게 사용할 수 있습니다.
위 내용은 C에서 매달린 참조를 어떻게 피할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!