Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > static int


Автор: nikitosinasuperman 2.1.2006, 22:50
набрал прогу, разбираюсьsmile
подскажите, чем отличается int от static int. Я когда запустил ниже приведенную прогу, то понял, что без статик значение, возвращенное функции обнуляется.

Код

#include<stdio.h>
#include<conio.h>
int first(void)
    {
     int i=0;

     return (i);
    }

int second(void)
   {
    static int i=0;
    return(++i);
   }

int main(){
    int counter;

    for(counter=0;counter<3;counter++)
        printf("First %d\n",first());

    for(counter=0;counter<3;counter++)
        printf("Second %d\n",second());

getch();
return 0;

}


ПОдскажите еще пожалуйста, как можно просмотреть результат программы не используя getch()

Автор: Daevaorn 2.1.2006, 23:07
Цитата(nikitosinasuperman @ 2.1.2006, 22:50)
ПОдскажите еще пожалуйста, как можно просмотреть результат программы не используя getch()

Запусти консоль в Windows и из под неё запусти свою программу, тогда весь вывод данных останется в консоле.

Цитата(nikitosinasuperman @ 2.1.2006, 22:50)
подскажите, чем отличается int от static int

Это вещи нельзя сравнивать. Модификатор static в твоем случае означает что на все вызовы функции будет одна и тажа переменная, то есть одна и таже область памяти. Эта переменная создается один раз в момент первого вызова функции и уничтожается при выходе из программы.
Если же static не писать, то каждый раз в стеке будет создаваться новая локальная переменная функции.

Автор: nikitosinasuperman 2.1.2006, 23:13
Цитата(Daevaorn @ 2.1.2006, 23:07)
Запусти консоль в Windows и из под неё запусти свою программу, тогда весь вывод данных останется в консоле.

НЕ, а можно ли какой-то комбинацией кнопок просмотреть, что сделала прога. ВОт например я нажимаю ctrl+F9 чтобы запустить прогу, а вот можно ли потом какой-то комбинацией просмотреть ,что сделалось?

Автор: Void 2.1.2006, 23:17
nikitosinasuperman
Билдером пользуешься? Нет, нельзя, насколько я помню.
Единственная известная мне C++ IDE, которая перенаправляет консольный ввод/вывод в специальное окно - это VC++ 8.0. Возможно еще Eclipse CDT.

Автор: nikitosinasuperman 2.1.2006, 23:25
Bc311^)

Автор: Dov 2.1.2006, 23:36
Alt+F5, но могу ошибится

Автор: BreakPointMAN 2.1.2006, 23:37
Цитата(nikitosinasuperman @ 2.1.2006, 23:13)
НЕ, а можно ли какой-то комбинацией кнопок просмотреть, что сделала прога. ВОт например я нажимаю ctrl+F9 чтобы запустить прогу, а вот можно ли потом какой-то комбинацией просмотреть ,что сделалось?


Цитата(nikitosinasuperman @ 2.1.2006, 23:25)
Bc311^)


попробуй <Alt>+<F5>...

Автор: Xela 2.1.2006, 23:38
Переменная i определённая в ф-ции first() локальная
1).её область видимости ограничивается ф-цией first()
2).прикаждом новом вызове first() переменная i создаётся заново и при этом инициализируется 0
3).она существует только на время выполнения ф-ции first()

Статическая переменная i объявненная в ф-ции second()
1).создаётся только один раз во время первого выполнения этой ф-ции
2).область видимости i - ф-ция second()
3).при очередном вхождении в ф-цию second() переменная i содержит значение которое было в неё записано при предыдущем выполнении second()


Автор: Partizan 3.1.2006, 01:07
Цитата(Void @ 2.1.2006, 23:17)
nikitosinasuperman
Единственная известная мне C++ IDE, которая перенаправляет консольный ввод/вывод в специальное окно - это VC++ 8.0. Возможно еще Eclipse CDT.

Borland X Builder

Автор: nikitosinasuperman 3.1.2006, 20:57
Всем спасибо. И еще один вопрос.
А вот вообще когда я объявляю static(a[n])..........
Вот если учитывать, что введет пользователь, те я буду работать со static с динамическим массивом, то можно как-то это закрутить через static. или использовать через функцию?smile
Добавлено @ 21:03
через alt F5 не получается ^(

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)