- •5. Кодовые таблицы ascii и ansi. Работа с символами и их кодами.
- •6. Константы в языке Си: целые, вещественные с фиксированной и плавающей точкой, символьные, строковые, null. Именованные константы.
- •8. Ввод информации в консольном стиле. Преобразование вводимых данных.
- •9. Синтаксис операторов языка Cи, операторы-выражения. Ошибки компиляции, времени выполнения, логические (смысловые).
- •10. Последовательность выполнения операций. Приоритет операций. Скобки.
- •12. Арифметические операции
- •15. Условные операторы (if, switch).
- •16. Тернарная операция "?".
- •19. Одномерные массивы. Инициализация одномерных массивов. Инициализация массива символов.
- •21. Циклические алгоритмы. Основные требования при использовании циклических (итерационных) алгоритмов.
- •23. Оператор цикла с предусловием и коррекцией for.
- •24.Вложенные циклы, последовательность выполнения входящих в них операторов. Простейший пример их применения к двумерным массивам.
- •26. Указатели, операции * и &. Указатель на указатель.
- •27. . Операции над указателями.
- •28. Связь указателей с массивами.
- •29. Работа с динамической памятью.
- •30. Строковые данные в языке Си как массивы символов. Стандартные функции работы со строками.
- •31. Тип String. Операции с типом String. Методы класса String.
- •32. Преобразование переменных типа String и массивов char друг в друга и в другие типы.
- •33. Краткая характеристика файлов *.H. Стандартные библиотечные функции. Стандартные арифметические функции.
- •3 4. Функции пользователя - способы описания, операция вызова функции.
- •35. Способы передачи информации в функцию и из нее.
- •36. Область видимости. Понятие блока.
- •37. Классы памяти и время жизни
- •38. Препроцессор, его роль. Директивы препроцессора. Директива #include.
35. Способы передачи информации в функцию и из нее.
Смотри 34.
36. Область видимости. Понятие блока.
Область видимости (действия) объекта (переменной и др.) – это та часть кода (текста) программы, в которой его можно использовать.
Основное правило видимости в языке Си: объект, объявленный внутри блока (участка программы, заключенного в фигурные скобки), как правило, виден, начиная с места его объявления и заканчивая концом этого блока ( } ). Если объявление данных лежит внутри нескольких входящих друг в друга блоков, оно считается расположенным в самом внутреннем из них. Если же нужно сделать объект видимым за пределами блока, нужно объявить его вне блока. Можно, например, объявить переменные вне всех функций; такие переменные называются глобальными, в отличие от переменных, объявленных внутри функции, называемых локальными и видимых только в пределах своей функции.
Область действия локальных данных – от точки декларации (объявления) до конца функции (блока), в которой произведено их объявление, включая все вложенные в него блоки.
Областью действия глобальных данных считается файл, в котором они определены, от точки описания до его окончания.
Если некоторое место программы входит в область видимости двух и более переменных с одинаковыми именами, объявленных на разном уровне вложенности блоков, действует та из них, которая объявлена на самом глубоком уровне.
37. Классы памяти и время жизни
Класс памяти определяет время жизни объекта и место его размещения в памяти
Существует 4 класса памяти: static (статический), extern (внешний), auto (автоматический),register(регистровый).
Объекты класса памяти static, существуют (занимают место в памяти) в течение всего времени работы программы. Их место в памяти определяется на этапе компиляции. К ним по умолчанию относятся глобальные переменные.
Объекты класса памяти auto, существуют лишь во время выполнения блока, в котором объявлены. К ним по умолчанию относятся локальные переменные. Память для них выделяется при входе в блок в пределах определенной области, называемой программным стеком. После выхода из блока занимаемая ими память освобождается и может быть использована для других автоматических переменных.
При любом вызове функции в программном стеке размещаются ее параметры, а также сохраняется содержимое регистров процессора на момент, предшествующий вызову функции, и адрес возврата из функции для того, чтобы при выходе из нее можно было продолжить выполнение вызывающей функции.
Класс памяти extern похож на static, но означает, что объект объявлен позже в этом или другом файле (см. ниже). Он может применяться к глобальным переменным.
Класс памяти register похож на auto; но он рекомендует компилятору разместить (если возможно) переменную не в стеке, а непосредственно в регистрах процессора. Регистровая память позволяет увеличить быстродействие программы, но к размещаемым в ней объектам в языке Си (но не С++) не применима операция получения адреса «&».
Обычно класс памяти переменных определяется по умолчанию (static либо auto). Но программист имеет возможность поменять класс памяти объекта, указав требуемый класс при объявлении перед его типом (в пределах допустимого по смыслу - например, глобальная переменная не может быть auto или register).
