C:全局,静态变量理解

时间:2010-03-22 10:39:12

标签: c variables

在以下程序中。我有一个疑问。我宣布了一个全局变量。我是 在函数中打印全局变量的地址。它给了我相同的地址 当我不改变全球的价值时。如果我对全局变量进行了任何更改 它给了我不同的地址为什么...........?就像它也发生静电一样。

#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 个答案:

答案 0 :(得分:3)

您不打印全局地址,而是打印其值。要打印地址:

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

注意&符号,它是“地址”运算符。 “%p”格式化程序只控制输出格式,它不会让printf()神奇地为你取得地址。

答案 1 :(得分:2)

您不打印变量的地址。

打印地址:

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