Форум программистов, компьютерный форум CyberForum.ru

Переменная static и область видимости - C++

Восстановить пароль Регистрация
 
kokzahvas
0 / 0 / 0
Регистрация: 26.06.2016
Сообщений: 65
29.09.2016, 08:38     Переменная static и область видимости #1
Я думал, что переменная объявленная при помощи ключевого имени static существует всё время от её объявления и до завершения работы программы, а компилятор ругается на то, что переменной «stavar» не существует. Что я не так делаю?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
    int& frreference(int);
    int main(int argc, char **argv)
    {
        int a = 12;
        int &refb = frreference(a);
        std::cout << stavar << std::endl; // Ошибка: «Переменная не существует».
        return 0;
    }
    int& frreference(int var)
    {
        static int stavar = var;
        int &rref = stavar;
        return rref;
    }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2016, 08:38     Переменная static и область видимости
Посмотрите здесь:

C++ Область видимости переменной
Область видимости переменной C++
Область видимости переменных C++
C++ Область видимости переменных
C++ Область видимости в библиотеках
Область видимости переменных C++
C++ Область видимости struct
Область видимости в классах C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Invader0x7F
Helper C/C++
 Аватар для Invader0x7F
264 / 141 / 56
Регистрация: 22.09.2016
Сообщений: 478
Завершенные тесты: 4
29.09.2016, 08:43     Переменная static и область видимости #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
    static int stavar = var;
    int& frreference(int);
    int main(int argc, char **argv)
    {
        int a = 12;
        int &refb = frreference(a);
        std::cout << stavar << std::endl; // Ошибка: «Переменная не существует».
        return 0;
    }
    int& frreference(int var)
    {
        int &rref = stavar;
        return rref;
    }
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11817 / 6796 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
29.09.2016, 08:54     Переменная static и область видимости #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от kokzahvas Посмотреть сообщение
Что я не так делаю?
Цитата Сообщение от kokzahvas Посмотреть сообщение
думал, что переменная объявленная при помощи ключевого имени static существует всё время от её объявления
От "создания" переменной и до кончины приложения.
Цитата Сообщение от kokzahvas Посмотреть сообщение
Что я не так делаю?
Вы путаете понятия "время хранения" (в данном случае static storage duration) и область видимости.
Yandex
Объявления
29.09.2016, 08:54     Переменная static и область видимости
Ответ Создать тему

Метки
static
Опции темы

Текущее время: 02:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru