Разъяснение о внешнем значении в С - PullRequest
0 голосов
/ 22 февраля 2019

В C внешняя переменная получает начальное значение «ноль».однако после прочтения об этой конкретной категории классов. Это говорит о том, что объявление переменной как extern означает, что значение прошло только «стадию декларирования». Как только переменная может получить начальное значение, не переходя к этапу инициализации и выделяя память дляконкретная переменная?Пожалуйста, рассмотрите следующий код:

extern int var; 
int main(void) 
{ 
var = 10; 
return 0; 
}

Я понимаю, почему возникает проблемная ситуация: мы попытались инициализировать значение переменной, которая не размещена в памяти (переменная на самом деле не существует).Моя точка зрения такова: почему ее памяти не существует, и, следуя терминологии "extern", переменная имеет начальное значение "ноль".На мой взгляд, это означает, что память действительно существует, если она имеет начальное значение ....

1 Ответ

0 голосов
/ 22 февраля 2019

Чтобы этот код был действительным, другая часть программы должна содержать определение var, например:

int var = 0;

, откуда берется начальное значение.Если вы не предоставите инициализатор, то он будет вести себя так, как если бы вы инициализировали с = {0} (это правило для статических переменных продолжительности хранения).

...