2014-09-24 3 views
0

Я получил этот код:Невозможно присвоить значение глобального массива в C++

#include <iostream> 
    int tabela[1]; 
    tabela[0] = 1; 
    int main(){ 
     std::cout << tabela[0]; 
     std::cin.get(); 
     return 0; 
    } 

и не хочет работать. Мой компилятор говорит: «tabela» не называет тип ». Однако, если я делаю это:

#include <iostream> 
int tabela[1]; 
int main(){ 
    tabela[0] = 1; 
    std::cout << tabela[0]; 
    std::cin.get(); 
    return 0; 
} 

Он работает. Может, объясните, почему? Заранее спасибо.

+5

Это просто недействительно C++. В глобальном масштабе вы можете только объявлять или инициализировать типы и переменные, а не назначать их. –

+0

Не могу объяснить это лучше, чем то, что сказал долан –

+0

Я ничего не знаю, поэтому у меня есть минус. Спасибо всем за ваши ответы. Когда я изменил массив на int, я получил ту же проблему, поэтому теперь я знаю, почему. еще раз спасибо –

ответ

3

На внешнем уровне файл C++ представляет собой последовательность объявлений. tabela[0] = 1; не является объявлением - это утверждение (в частности выражение-заявление). Тело функции, однако, представляет собой последовательность утверждений, поэтому вполне нормально помещать эту строку в тело main (или любую другую функцию).

Некоторые утверждения являются объявлениями (называемыми декларациями-заявлениями), но в целом они не являются.

1

для того, чтобы он был действительным C++, вы можете инициализировать переменные только глобально, вы не можете их назначать.

Редактировать: комментарии избили меня до него. реквизит

Смежные вопросы