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

Отличие static от объявление переменных ДО функции main - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ указатели http://www.cyberforum.ru/cpp-beginners/thread52761.html
когда работаешь с оператором delete нужно как-то показывать указатель?? Подробнее непишите пожалуйста??
C++ Динамическое создание файлов. Очень нужен пример такой на С/С++ (поф,ибо у меня DEV-C++).Кто поможет ?:( ЗЫ: Вылетает Unhandled Win32 exception =_= в моем примере http://www.cyberforum.ru/cpp-beginners/thread52757.html
Как создают современные компьютерные игры? C++
Интересно, как создают современные компьютерные игры?? То есть на каком языке программирования?? Я слышал в основном на с++!!! Кто нибудь может мне помочь, хочу попробовать создать игру??
Подскажите о операторе delete C++
Как правильно пользоваться оператором удаления delete??
C++ Ключевое слово break http://www.cyberforum.ru/cpp-beginners/thread52733.html
Как правильно надо использовать ключевое слово break??
C++ Как представить в c++ дана к примеру матрица: a b c d e f 1, 0, 0, 1, 0, 1, a 0, 1, 1, 0, 0, 1, b 0, 1, 1, 0, 0, 0, c 1, 0, 0, 1, 0, 1, d 0, 0, 0, 0, 1, 0, e 1, 1, 0, 1, 0, 1 f подробнее

Показать сообщение отдельно
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 378
Регистрация: 30.03.2009
Сообщений: 16,155
Записей в блоге: 26
27.09.2009, 00:10
Попробую по простому, т.е. на примерах

========================================================

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void func1 (void)
{
}
 
static int x;
 
void func2 (void)
{
  x = 1;
}
 
void func3 (void)
{
  x = 2;
}
Для данного примера наличие модификатора static по сути дела означает лишь то, что переменная НЕ будет видна из других модулей (исходных файлов). "Видна" означает доступ по имени "x". В данном случае ты можешь обращаться к переменной из функций func2 и func3. Ничто бы не мешало обращаться к ней из func1, но обращаться к переменной нельзя до тех пор, пока она не оьъявлена. Т.е. в данном случае и без "sttaic" обращаться было бы нельзя

========================================================

Второе использование static'а - это создание глобальной переменной, обращаться к которой можно только из конкретной функции (или даже лексического блока)

C
1
2
3
4
5
6
7
8
9
10
11
void func1 (void)
{
  static int x;
  x = 1;
}
 
void func2 (void)
{
  static int x;
  x = 2;
}
Здесь реально получаются две разные переменные (т.е. выделяются. две ячейка памяти). Но обращаться к ним можно только в соотсветствующей процедуре. По большому счёту этот код эквивалентен

C
1
2
3
4
5
6
7
8
9
10
11
12
static int x1;
static int x2;
 
void func1 (void)
{
  x1 = 1;
}
 
void func2 (void)
{
  x2 = 2;
}
static переменную обычно прячут внутри процедуры, чтобы случайно не начать работать с ней в другой. Т.е. чисто технически это можно рассматривать как некий элемент удобства
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru