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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Wbgury
 Аватар для Wbgury
88 / 85 / 2
Регистрация: 16.05.2010
Сообщений: 272
#1

отличия между static и auto переменными - C++

11.04.2012, 15:42. Просмотров 1252. Ответов 4
Метки нет (Все метки)

Объясните пожалуйста чем отличаются переменные static и auto? Если можно покажите их отличие в простом примере.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2012, 15:42     отличия между static и auto переменными
Посмотрите здесь:

C++ Отличия между структурами и классами
В чем отличия между union и struct? C++
Обмен значений между двумя вещественными переменными. C++
C++ auto
Что общего и какие отличия между одномерным и двумерным массивами C++
Объясните отличия между двумя кодами C++
C++ Функция interchange(), которая выполняет обмен значений между двумя переменными
В чем отличия между выражением (expression) и оперетором (statement)? C++
C++ Функция, которая выполняет обмен значений между двумя целочисленными переменными
Отличия спецификаторов decltype и auto C++
C++ В чем отличия между std::cref() и std::bind()?
C++ Какие есть отличия между struct и class кроме модификаторов доступа по умолчанию?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
11.04.2012, 15:47     отличия между static и auto переменными #2
auto при выходе из блока уничтожается
под static память выделяется один раз и освобождается при завершении программы
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
11.04.2012, 15:52     отличия между static и auto переменными #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
void foo()
{
    static int x = 0; // попробуй удалить static
    ++x;
    
    std::cout << x << "\n";
}
int main()
{
    for(int i = 0; i < 10; ++i)
        foo();
}
Автоматические переменные уничтожаются при выходе из функции, статические - инициализируются один раз и не теряют значение при выходе из функции, живут до завершения программы.

В примере вызывается функция 10 раз, в ней есть локальная статическая переменная. Видно, что значение не теряется между её вызовами, будет напечатано: 1, 2, 3, ....

Если убрать спецификатор static, переменная будет автоматической, т.е. будет создаваться каждый раз заново при вызове функции и инициализироваться заново. Будет напечатано: 1, 1, 1, ...
Wbgury
 Аватар для Wbgury
88 / 85 / 2
Регистрация: 16.05.2010
Сообщений: 272
11.04.2012, 17:05  [ТС]     отличия между static и auto переменными #4
panicwassano,
Schizorb, огромное спасибо! Все бы преподователи в универах обьясняли как вы) Да нет, же! Они надектуют всякой дребедени. Про static и auto в начале года не понял, а тут экзамены скоро по всему что прошли, вот решил подтянуть)
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
11.04.2012, 21:25     отличия между static и auto переменными #5
Wbgury книжки надо читать
Yandex
Объявления
11.04.2012, 21:25     отличия между static и auto переменными
Ответ Создать тему
Опции темы

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