2016-01-17 2 views
4
static int i = 5; 
static int j = i; 

int main() 
{ 
    return 0; 
} 

Я инициализирую статическую переменную другой статической переменной, которая была объявлена ​​до этого, но также я получаю переменную. Пожалуйста, скажите мне, почему это ошибка.Инициализация статических переменных

+7

Вы не можете, переменные 'static' могут быть инициализированы только постоянными значениями. –

+0

C только имеет очень ограничительное понятие «постоянное», и, к сожалению, ваш прецедент не распространяется на это. –

+1

Можете ли вы объяснить, почему вы этого хотите? Поэтому может быть предложено решение. –

ответ

2

Вы не можете инициализировать j с i, потому что во время компиляции, компилятор не будет знать значение i .Чтобы присвоить значение j = i, код должен выполняться во время выполнения. При инициализации глобального или статического в C компилятор и компоновщик должны работать вместе, чтобы создать макет памяти. Компилятор даст значение и линкеру нужно указать адрес переменной. Ниже код будет работать:

static int i = 5; 
static int j; 

int main() 
{ 
    j=i;  
    return 0; 
} 
0

Если это реальный случай, может быть, вы должны инициализировать их явно.