2010-03-22 4 views
2

다음 프로그램에서. 나는 의심이 하나있다. 하나의 전역 변수를 선언했습니다. 나는
함수에 전역 변수의 주소를 출력한다. 그것은 내가 글로벌 값을 바꾸지 않을 때 같은 주소 인 을주고 있습니다. 전역 변수를 변경 한 경우 다른 주소를 사용하는 이유는 무엇입니까? ...........? 정적 인 경우에도 이와 같이 발생합니다.C : 전역, 정적 변수 이해

#include<stdio.h> 
int global=10 ; // Global variables 

void function(); 

main() 
{ 
     global=20; 
     printf (" %p \n" , global) ; 
     printf (" Val: %d\n", global) ; 
     function(); 
     new(); 
} 

void function() 
{ 
     global=30; 
     printf (" %p \n" , global) ; 
     printf (" Val: %d\n", global) ; 
} 

감사합니다.

답변

2

변수의 주소를 인쇄하지 않습니다.

printf("%p\n", &global); 
3

당신은 세계의 주소를 인쇄되지 않는 경우, 당신은 그 값을 인쇄 :

는 주소를 인쇄합니다. 주소를 인쇄하려면

printf (" %p \n" , & global) ; 

"주소 연산자"인 앰퍼샌드에 유의하십시오. "% p"포맷터 만 출력 형식을 제어합니다. printf()가 마술처럼 주소를 가져 가지 않습니다.