>백엔드 개발 >C++ >C 정의되지 않은 동작에서 참조를 생성하기 위해 NULL 포인터를 역참조하는 이유는 무엇입니까?

C 정의되지 않은 동작에서 참조를 생성하기 위해 NULL 포인터를 역참조하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-06 14:27:121019검색

Why is Dereferencing a NULL Pointer to Create a Reference in C   Undefined Behavior?

C 표준: 참조 생성을 위한 NULL 포인터 역참조의 정의되지 않은 동작

C 표준에서는 NULL 포인터를 역참조하면 정의되지 않은 동작이 발생한다고 명시적으로 명시합니다. . 이 원칙은 제공된 코드에서 예시된 것처럼 참조 생성에도 적용됩니다.

int* ptr = NULL;
int& ref = *ptr;
int* ptr2 = &ref;

이 코드에서 컴파일러는 NULL 포인터 ptr을 역참조하여 참조 참조를 생성하려고 시도합니다. 표준에 따르면 이는 정의되지 않은 동작이며 프로그램의 후속 작업은 예측할 수 없습니다.

표준 8.3.2/4의 참고 사항은 이 점을 강조하여 null 참조가 웰에 존재할 수 없다고 명시합니다. 정의되지 않은 동작인 NULL 포인터를 역참조해야 하기 때문에 정의된 프로그램입니다.

정의된 동작은 예측 가능하고 일관된 프로그램 실행을 보장한다는 점에 유의하는 것이 중요합니다. 정의되지 않은 동작은 프로그램의 결과를 지정하지 않은 상태로 둡니다. 따라서 C 코드에서 정의되지 않은 동작에 의존하지 않는 것이 중요합니다.

위 내용은 C 정의되지 않은 동작에서 참조를 생성하기 위해 NULL 포인터를 역참조하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.