auto и локальная область видимости
Переменные уровня блока
«auto и локальная область видимости» — бесплатный урок C Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 4 уроков всего.
Что такое область видимости
Область видимости — это участок кода, в котором имя доступно. В C переменные, объявленные внутри блока, доступны только в этом блоке.
#include <stdio.h>
int main(void) {
int x = 5;
printf("x = %d\n", x);
return 0;
}Класс хранения auto
Локальные переменные по умолчанию имеют класс хранения auto. Это ключевое слово редко пишут, поскольку оно подразумевается для каждой переменной с блочной областью видимости.
#include <stdio.h>
int main(void) {
auto int n = 42;
printf("n = %d\n", n);
return 0;
}Блочная область видимости
Пара фигурных скобок создаёт новый блок. Переменные внутри него перестают существовать после завершения блока.
#include <stdio.h>
int main(void) {
{
int inner = 10;
printf("inner = %d\n", inner);
}
return 0;
}Автоматическое время жизни
Переменная auto создаётся при входе в блок и уничтожается при выходе из него. Это и есть её время жизни.
#include <stdio.h>
int main(void) {
for (int i = 0; i < 2; i++) {
int fresh = i * 10;
printf("fresh = %d\n", fresh);
}
return 0;
}Затенение
Внутренняя переменная может затенять внешнюю переменную с тем же именем. Внутри своего блока приоритет имеет внутреннее имя.
#include <stdio.h>
int main(void) {
int x = 1;
{
int x = 99;
printf("inner x = %d\n", x);
}
printf("outer x = %d\n", x);
return 0;
}Параметры функций являются локальными
Параметры тоже являются локальными переменными. Они существуют только во время выполнения функции.
#include <stdio.h>
int square(int n) {
return n * n;
}
int main(void) {
printf("%d\n", square(6));
return 0;
}Неинициализированные локальные переменные
Переменная auto автоматически не обнуляется. Чтение такой переменной до присваивания возвращает мусорное значение. Всегда выполняйте инициализацию.
#include <stdio.h>
int main(void) {
int x = 0;
x = x + 5;
printf("x = %d\n", x);
return 0;
}Локальные переменные при каждом вызове
При каждом вызове функции создаётся собственная новая копия её локальных переменных.
#include <stdio.h>
void greet(void) {
int count = 1;
printf("count = %d\n", count);
}
int main(void) {
greet();
greet();
return 0;
}Преимущества локальных переменных
Локальная область видимости ограничивает переменные и предотвращает случайное взаимодействие между частями программы.
#include <stdio.h>
int main(void) {
int a = 3;
{
int b = 4;
printf("a + b = %d\n", a + b);
}
return 0;
}Вложенные блоки
Блоки могут быть вложенными. Внутренние блоки могут читать внешние переменные, но внешние блоки не могут читать внутренние.
#include <stdio.h>
int main(void) {
int outer = 1;
{
int middle = 2;
{
int inner = 3;
printf("%d\n", outer + middle + inner);
}
}
return 0;
}Область видимости и циклы
Переменная, объявленная в заголовке цикла for, доступна только в этом цикле.
#include <stdio.h>
int main(void) {
int sum = 0;
for (int i = 1; i <= 4; i++)
sum += i;
printf("sum = %d\n", sum);
return 0;
}Быстрая проверка
Проверьте своё понимание auto и локальной области видимости.
Итоги: auto и локальная область видимости
Вы узнали, как ведут себя локальные переменные.
- Переменные с блочной областью видимости по умолчанию имеют класс хранения
auto - Их время жизни связано с блоком
- Внутренние имена могут затенять внешние
- Локальные переменные не инициализируются автоматически
- При каждом вызове функции создаются новые локальные переменные
Изучай C с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 39
- Уроки
- 144
Часто задаваемые вопросы
Урок «auto и локальная область видимости» бесплатный?
Да — полный текст урока «auto и локальная область видимости» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 4 уроков всего.
Чему я научусь в уроке «auto и локальная область видимости»?
Переменные уровня блока Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C Academy?
Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «auto и локальная область видимости»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C Academy?
Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- auto и локальная область видимости
- static-переменные
- extern и глобальные переменные
- register и const