2010-03-22 188 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()神奇地爲你輸入地址。