ilyachalov (ilyachalov) wrote,
ilyachalov
ilyachalov

Category:

С++: объявление и определение переменной

Продолжение, начало тут: 13 глава Лафоре, обязательность main, С++.

Объявлением (по-английски «declaration») переменной называется указание ее типа и имени. Определение (по-английски «definition») переменной — это выделение под нее необходимой памяти.

int someVar;              // не только объявление, но и определение
cout << &someVar << endl; // выведем на экран для проверки адрес переменной
Этот код у меня работает без ошибок (компилятор среды «Visual Studio Community 2017»).

Почему? Казалось бы, я только объявил переменную. Однако, компилятор еще и выделил под эту переменную память, то есть произошло и определение этой переменной. Большинство объявлений переменных является одновременно и определениями.

Интересно, что если переменная глобальная (то есть определена вне тела какой-либо функции и не является членом класса или структуры), то при ее определении она еще считается и инициализированной нулем. Для локальной переменной это не так. Например:
#include <iostream>
using namespace std;

int someVar1;                 // глобальная переменная

int main()
{
    int someVar2;             // локальная переменная

    cout << someVar1 << endl; // выведет на экран число 0
    cout << someVar2 << endl; // ошибка компиляции
}
Текст ошибки будет следующий:
error C4700: использована неинициализированная локальная переменная "someVar2"

Это, видимо, не совсем ошибка, а, скорее, предупреждение. Его можно обойти. Например, так (следующий код у меня собирается без ошибок и работает):
#include <iostream>
using namespace std;

int someVar1;                  // глобальная переменная

int main()
{
    int someVar2;              // локальная переменная

    cout << someVar1 << endl;  // выведет на экран число 0
    cout << &someVar2 << endl;
    cout << someVar2 << endl;  // выведет на экран какое-то значение
}

Но какой в этом смысл? Хорошей практикой в программировании считается всегда инициализировать переменные перед их использованием. Это точно уменьшит число ошибок.
Tags: Образование, Программирование
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 0 comments