2017-02-08 3 views
0

왜 값 NULL 포인터의 주소가 달라 지 는가 다음은 NULL 포인터의 개념을 이해하려고하는 예제 프로그램입니다. 여기 & q는 다른 주소를 출력하고 'q'는 0을줍니다. 이유는 무엇입니까?C++에서 NULL POINTER

#include <iostream> 
using namespace std; 
int main() 
{ 

int *q=NULL; 

cout <<"adress of pointer q\n" << q<<endl; 
cout <<"adress with apersand pointer q\n" << &q<<endl; 

} 

답변

1

NULL 포인터는 iostream을 포함하여 여러 표준 라이브러리에서 정의 된 0 값의 상수입니다.

대부분의 운영 체제에서 운영 체제가 해당 메모리를 예약했기 때문에 프로그램은 주소 0의 메모리에 액세스 할 수 없습니다. 그러나 메모리 주소 0은 특별한 의미가 있습니다. 그것은 포인터가 접근 가능한 메모리 위치를 가리 키지 않는다는 것을 신호한다. 그러나 규칙에 따라 포인터에 null (제로) 값이 들어 있으면 아무 것도 가리 키지 않는 것으로 간주됩니다.

참조는 포인터가 아닙니다.

참조는 유효한 객체 또는 기능을 참조하도록 초기화되어야합니다. [참고 : 특히 null 참조는 잘 정의 된 프로그램에 존재할 수 없습니다. 이러한 참조를 만들 수있는 유일한 방법은 NULL 포인터를 역 참조하여 얻은 "객체"에 바인드하는 것이므로 정의되지 않은 행동. 9.6에서 설명한대로 참조는 비트 필드에 직접 바인딩 될 수 없습니다. ]

null 포인터는 "유효한 개체 또는 기능"을 확실히 가리키지 않으며 표준 참조위원회에 null 참조를 도입 할 의사가 없습니다.

+0

& q와 q가 같지 않은 이유는 무엇입니까? 주소가 0 인 경우 & with & memeory 주소가 표시됩니다. – Step

+0

위의 이유는 nullpointer q 인쇄 값 0을 설명합니다. 주소가 0이 아니므로 & q 메모리 위치를 인쇄하십시오. – Aryan

0

q를 NULL로 초기화 했으므로 q가 0이됩니다. 그러나 변수 q는 어딘가에 저장되며 주소는 & q입니다.