Список контрольных вопросов

ВопросВопрос
1.Что такое область действия переменных?16.Передача параметров по значению.
2.Что такое область видимости переменных?17.Передача параметров по адресу.
3.Объясните понятие: оператор расширения области видимости.18.Передача параметров по ссылке.
4.Что такое классы памяти?19.Параметр со значением по умолчанию.
5.Какие бывают виды операций?20.Передача массивов в качестве параметров.
6.Объясните понятие $L$-значения.21.Описание функции main().
7.Что такое указатель.22.Описание функции с переменным числом параметров.
8.Операция взятия адреса.23.Методика перезагрузки функций.
9.Операция разадресации.24.Ввод/вывод информации.
10.Методика сложения и вычитания указателя с константой.25.Переименование типов.
11.Методика разности двух указателей.26.Что такое перечисление?
12.Что такое ссылка?27.Что такое структуры?
13.Что такое одномерный массив?28.Что такое объединения?
14.Что такое многомерный массив?29.Работа с динамической памятью.
15.Объясните понятие С-строка.30.Директивы препроцессора.

Стоимость ответов на контрольные вопросы

💡 Мы предлагаем студентам $3$ варианта помощи по контрольным вопросам:

    • Сокращенные ответы, по интересующим студента вопросам. Стоимость сокращенного ответа на один контрольный вопрос составляет $50$ рублей (пример см. чуть ниже).
    • Развернутые ответы, по интересующим студентам вопросам. Стоимость развернутого ответа на один контрольный вопрос составляет $150$ рублей (пример см. чуть ниже).
    • Помощь репетитора по программированию Александра Георгиевича (звонить по номеру телефона $8\ (926)\ 610-61-95$). Минимальная длительность одного занятия составляет $90$ минут и стоит ровно $1\ 000$ рублей.

Пример сокращенного ответа на вопрос: «Что такое классы памяти?»

В языке СИ все переменные помимо типа обладают еще и классом памяти. Всего существует четыре класса памяти переменных: автоматический (auto), статический (static), регистровый (register) и внешний (extern).

  • Автоматический класс памяти по умолчанию имеют все локальные переменные. Область видимости таких переменных ограничена блоком.
  • Переменная, имеющая статический класс памяти, существует в течение всего жизненного цикла программы. Возведение локальных переменных в ранг статических позволяет поддерживать их значения между вызовами функций.
  • Когда происходит объявление регистровой переменной, то это означает, что мы «просим» компилятор о том, чтобы переменная располагалась в регистре, а не в оперативной памяти.
  • Внешние переменные в языке СИ используется тогда, когда нужно иметь доступ к переменной существующей в другом модуле или, когда переменная объявляется в программе ниже, чем ссылка на нее.

💡 Такой сокращенный ответ можно у нас заказать за $50$ рублей.

Пример развернутого ответа на вопрос: «Что такое классы памяти?»

Стандарт языка СИ поддерживает четыре спецификатора класса памяти:

автоматический (auto)статический (static)регистровый (register)внешний   (extern)

Эти спецификаторы сообщают компилятору, как он должен стараться разместить эти переменные в памяти. Общая форма объявления переменных в этом случае принимает вид:

<спецификатор класса памяти> <тип данных> <имя переменной>;

Класс памяти «auto»

По умолчанию локальные переменные имеют спецификатор auto. Такие переменные располагаются в стеке, а их область видимости ограничена блоком их объявления. Глобальные переменные не могут быть объявлены как auto, потому что располагаются в data-сегменте.

В данном примере продемонстрирован принцип работы локальной автоматической переменной:

Класс памяти «static»

Переменные объявленные со спецификатором static, хранятся постоянно внутри своей функции или файла. В отличие от глобальных переменных они невидимы за пределами своей функции или файла, но они сохраняют свое значение между вызовами. Локальные и глобальные переменные, имеющие спецификатор static, ведут в программе себя по-разному.

В данном примере продемонстрирован принцип работы локальной статической переменной:

Результаты работы программы

пример работы статической переменной

Очень важно понимать, что в отличие от простой локальной переменной, статическая локальная переменная продолжает существовать между вызовами функций. Простая локальная переменная создается заново при каждом вызове, а затем уничтожается.

Глобальная переменная со спецификатором static заставляет компилятор создать глобальную переменную, видимую только в том файле, в котором она объявлена. При разработке больших и сложных программ для «сокрытия» переменных можно смело применять спецификатор static.

Класс памяти «register»

Спецификатор register можно применять к переменным любого типа данных. Стандарты языка C89 и C99 обязывают компилятор обращаться с переменными, имеющими спецификатор register, так быстро, насколько это возможно. При этом символьные и целочисленные переменные размещаются в регистрах процессора.

Разные компиляторы могут по-разному обрабатывать переменные со спецификатором register. Иногда спецификатор register попросту игнорируется компилятором и переменная обрабатывается как обычная.

Спецификатор register можно применять только к локальным переменным и формальным параметрам функций. Регистровые переменные идеально подходят для оптимизации скорости работы цикла. Некоторые профессиональные программисты вообще настаивают на том, чтобы спецификатор register был применен только к переменным-счетчикам циклов.

В данном примере продемонстрирован принцип работы локальной регистровой переменной:

Результаты работы программы

переменные класса памяти register

Практический ощутимый эффект от применения спецификатора register может быть получен только для переменных целого и символьного тип.

Класс памяти «extern»

Спецификатор extern указывает на то, что к переменной применяется внешнее связывание, именно поэтому значения таких переменных будут доступны во всей программе. Если нужно сослаться на переменную, определенную в другой части программы, необходимо объявить ее как внешнюю (extern).

В данном примере продемонстрирован принцип работы внешних переменных:

Спецификатор extern играет большую роль в программах, состоящих из многих файлов. На практике профессиональные программисты обычно включают объявления extern в заголовочные файлы, которые просто подключаются к каждому файлу исходного текста программы.

P.S. Спецификатор extern можно применять в объявлении функций, но в этом нет никакой необходимости.

💡 Такой развернутый ответ можно у нас заказать за $150$ рублей.

Для оформления заказа пишите на почту: proglabs@mail.ru.
Время нашего ответа обычно составляет не более 10 минут.