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

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

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

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

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

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

Отличия спецификаторов decltype и auto - C++
Спецификатор auto : - выводит тип переменной из инициализатора; - может задействовать только один тип или чтобы они были совместимыми;...

Отличия между структурами и классами - C++
Объясните пожалуйста, в С++, получается, что структура отличается от класса только тем, что у нее по умолчанию все данные public? Т.е....

В чем отличия между union и struct? - C++
Здравствуйте! Вопрос в названии темы

Объясните отличия между двумя кодами - C++
Всем привет ! Чем отличается такой код for(...){ ... ... } от такого for(...)

В чем отличия между выражением (expression) и оперетором (statement)? - C++
Здравствуйте, скажите пожалуйста в чем отличия между выражением и оператором? Если x=100 это выражение, то x=100; оператор? Тогда...

Что общего и какие отличия между одномерным и двумерным массивами - C++
Что общего и какие отличия между одномерным и двумерным массивами

4
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
11.04.2012, 15:47 #2
auto при выходе из блока уничтожается
под static память выделяется один раз и освобождается при завершении программы
1
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
11.04.2012, 15:52 #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, ...
1
Wbgury
88 / 85 / 2
Регистрация: 16.05.2010
Сообщений: 272
11.04.2012, 17:05  [ТС] #4
panicwassano,
Schizorb, огромное спасибо! Все бы преподователи в универах обьясняли как вы) Да нет, же! Они надектуют всякой дребедени. Про static и auto в начале года не понял, а тут экзамены скоро по всему что прошли, вот решил подтянуть)
0
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
11.04.2012, 21:25 #5
Wbgury книжки надо читать
0
11.04.2012, 21:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2012, 21:25
Привет! Вот еще темы с ответами:

Какие есть отличия между struct и class кроме модификаторов доступа по умолчанию? - C++
Какие есть отличия между struct и class кроме модификаторов доступа по умолчанию?

Обмен значений между двумя вещественными переменными. - C++
Помогите пожалуйста, решить задачи =))) Разработайте процедуру, которая получает через параметры две вещественные переменные х, у и...

Можно ли просчитать дистанцию между переменными в map? - C++
values.push_back(necessaryCoor) - - - - Вектор содержит только координаты points.push_back(newPoints) - - - Вектор содержит только айди...

Функция, которая выполняет обмен значений между двумя целочисленными переменными - C++
Задание такое: написать функцию, которая выполняет обмен между двумя целочисленными переменными. Тип аргумента - int*. #include&lt;iostream&gt;...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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