Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 107
1

Инициализация переменной при объявлении

24.07.2015, 17:38. Просмотров 1052. Ответов 4
Метки нет (Все метки)

Здравствуйте!

Есть 2 примера кода.
1-й:
C
1
2
3
4
5
6
7
int a;
int main()
{
    a = 5;
    printf("%d", a);
    return 0;
}
2-й:
C
1
2
3
4
5
6
int a=5;
int main()
{
    printf("%d", a);
    return 0;
}
Чем отличаются эти два участка кода? Понятно, что результат будет одинаков, но в какой момент переменной а будет присвоено значение 5 во 2-м случае?
Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.07.2015, 17:38
Ответы с готовыми решениями:

Ошибка при объявлении переменной Структурного Типа
Не могу понять: почему при инициализации переменной структурного типа происходит ошибка? (Expected...

Объявление символьной переменной value и указателя на символ pointer в одном объявлении
Запишите на языке С объявление символьной переменной value и указателя на символ pointer в одном...

Инициализация переменной
Привет, как сделать чтобы переменной присваивалось значение если я ничего не ввел и нажал Enter...

Ошибка при объявлении struct
Добрый день, господа и дамы. Возникла небольшая проблема при объявлении struct Вот такая...

4
Эксперт PHP
2722 / 2373 / 1110
Регистрация: 14.05.2014
Сообщений: 6,776
Записей в блоге: 1
24.07.2015, 17:43 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от YuryD Посмотреть сообщение
Чем отличаются эти два участка кода?
тем, что в первом переменная автоматически инициализируется нулем, а затем в мэйне ей присваивается 5. А во втором случае она сразу инициализируется пятью. Ну вообще, глобальные переменные - это зло.
0
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 107
24.07.2015, 17:48  [ТС] 3
Ясно, тогда 2 вопроса:
1. После запуска exe-шника, прежде, чем вызовется функция main, будет выполнена какая-то служебная функция инициализации глобальных переменных?
2. Почему "в первом переменная автоматически инициализируется нулем"? Нет ключевого слова static. Я так понимаю в ней будет мусор?
0
Эксперт PHP
2722 / 2373 / 1110
Регистрация: 14.05.2014
Сообщений: 6,776
Записей в блоге: 1
26.07.2015, 22:34 4
Цитата Сообщение от YuryD Посмотреть сообщение
Нет ключевого слова static
это глобальная переменная (находящаяся вне тела какой-либо функции, т.е. в глобальной области видимости). А глобальные переменные, как и статические, без явной инициализации автоматически принимают значение 0.
0
1 / 1 / 1
Регистрация: 06.06.2009
Сообщений: 107
27.07.2015, 08:07  [ТС] 5
Со 2-м вопросом понятно. Но 1-й остался без ответа. Каким образом производится инициализация глобальных переменных? В ехе-файле, кроме функций, написанных программистом, содержатся ещё какие-то служебные функции, которые вызываются помимо кода программиста?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.07.2015, 08:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Использование констант при объявлении массива
Пишу халтуру в TC2.0 const int N=3; int Square; А мне в ответ компилятор Error...

Выделение памяти при обычном объявлении
Пусть имеется некий код int main(){ int a, b, c, d, e, f , g , e; int f = 15; int z =...

Инициализация структуры при объявлении
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <FONT face="Times New Roman" color=#000000 size=3>Как...

Инициализация массива при объявлении
Здравствуйте Маленький вопросик как проинициализировать массив при определении? template...


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

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

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