2017-10-31 4 views
-3
void main() 
{ 
    int a=5,*p,*c=NULL; 
    printf("p=%u",p); //OUTPUT p=3839036080 
    printf("\nc=%u",c); //OUTPUT c=0 

} 

여기에 p에 주소를 할당하지 않은 이유는 무엇입니까? 그리고 c에는 NULL이 할당되어 있으므로이 값을 0으로 저장한다는 의미입니까?이 프로그램에서 출력을 설명하십시오

+0

초기화되지 않은 변수는 가비지 값 임에도 불구하고 일부 값을 갖고 있지 않습니다. 포인터는 변수이기도하다. 메모리의 명명 된 위치. –

+0

[C에서 NULL이 항상 0입니까?] (https://stackoverflow.com/q/9894013/669576) –

+0

* p에 어떤 주소도 지정하지 않은 이유는 무엇입니까? * 무엇을 기대합니까? 해야할 일? –

답변

0

여기에 p에 대한 주소를 할당하지 않은 이유는 무엇입니까?

당신은 printf()라고, 그래서 뭔가를 인쇄 할 수 있습니다. 변수는 초기화되지 않았으므로 변수를 저장하는 데 사용 된 메모리에있는 모든 내용이 인쇄됩니다.

그리고 c는 NULL로 할당되어 값을 0으로 저장한다는 의미입니까?

예, NULL 중 하나 0, (char *)0, 또는 뭔가 동등한로 확장 매크로이다.