C: Глобальное понимание статических переменных - PullRequest
2 голосов
/ 22 марта 2010

В следующей программе. У меня есть одно сомнение. Я объявил одну глобальную переменную. Я
печать адреса глобальной переменной в функции. Это дает мне тот же адрес когда я не меняю значение глобального. Если бы я сделал какие-либо изменения в глобальных переменных Это дает мне другой адрес, почему ...........? Например, это происходит и для статики.

#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 ]

3 голосов
/ 22 марта 2010

Вы не печатаете адрес глобального, вы печатаете его значение. Для печати адреса:

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

Обратите внимание на амперсанд, который является оператором "address-of". Форматер "% p" контролирует только формат вывода, он не заставляет printf () волшебным образом принимать адрес за вас.

2 голосов
/ 22 марта 2010

Вы не печатаете адрес переменной.

Для печати адреса:

printf("%p\n", &global);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...