Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Вопрос №13. Объединения. Перечисляемый тип. Поля битов. Псевдонимы существующих типов



Объединение – это частный случай структуры, все поля которой располагаются по одному и тому же адресу.

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

Объединения применяют в тех случаях, когда известно, что больше одного поля одновременно не требуется.

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

Объединения применяются также для интерпретации одного и того же битового представления. Например, работа со структурой, содержащей битовые поля:

По сравнению со структурами на объединения налагаются некоторые ограничения:

l объединение может инициализироваться только значением его первого элемента;

l объединение не может содержать битовые поля;

l объединение не может содержать виртуальные методы, конструкторы, деструкторы и операцию присваивания;

l объединение не может входить в иерархию классов.

Перечисления (enum)

При написании программ часто возникает потребность определить несколько именованных констант, для которых требуется, чтобы все они имели различные значения. Для этого используется перечисляемый тип данных, все возможные значения которого задаются списком целочисленных констант. Формат:

enum [имя_типа] {список_констант};

Имя типа задается в том случае, если в программе требуется определять переменные этого типа. Компилятор обеспечивает, чтобы эти переменные принимали значения только из списка констант.

Константы должны быть целочисленными и могут инициализироваться обычным образом. При отсутствии инициализатора первая константа обнуляется, а каждой следующей присваивается на единицу большее значение, чем предыдущей:

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

С переменными перечисляемого типа можно производить следующие операции:

l можно присвоить переменной типа enum переменную другого типа;

l Можно производить сравнения.

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

Вопрос №14. Объявление и определение функций в языке С++. Возвращаемое значение, параметры функции, способы передачи параметров в функцию.

Функции – это именованная последовательность описаний и операторов, выполняющая какое-либо законченное действие.

l Функция может принимать параметры и возвращать значение.

l Функция начинает выполняться в момент вызова.

l Любая функция должна быть объявлена и определена.

В определении, в объявлении и при вызове одной и той же функции типы и порядок следования параметров должны совпадать.

l Объявление функции (прототип) задает ее имя, тип возвращаемого значения и список передаваемых аргументов.

l Определение функции содержит, кроме объявления, тело функции, представляющее собой последовательность операторов и описаний в фигурных скобках.

Тип возвращаемого функцией значения может быть любым, кроме массива и функции (но может быть указателем на массив или функцию). Если функция не должна возвращать значение, указывается тип void.

Список параметров определяет величины, которые требуется передать в функцию при ее вызове. Сами параметры разделяются запятыми. Для каждого параметра указывается его тип и имя.

Тип возвращаемого значения и типы параметров совместно определяют тип функции.

l Результат функции – это временная переменная, которая может иметь любой тип, кроме массива и функции, возвращается функцией и используется как операнд, в той части выражения, где был произведен вызов функции. Значение переменной результат (определяется) устанавливается в операторе return, который производит это действие наряду с завершением выполнения функции, и выходом из функции. В теле функции может быть несколько операторов return.

l Вызов функции – это выполнение тела функции в той части выражения, где встретилось имя функции со списком фактических аргументов.

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

l Локальные переменные – это собственные переменные функции, используются только алгоритмом, записанным в теле функции.

l Глобальные переменные – это переменные, которые определены вне теле функции и одновременно доступны всем.

Способы передачи параметров:

l по значению – копируются значения фактических параметров в формальные, при изменении формальных параметров значения соответствующих фактических параметров не изменятся;

l по адресу – в стеке копии адресов фактических параметров. Изменяются исходные значения в ячейках с этими адресами;

l по ссылке – отображается формальный параметр в фактический, поэтому при изменении формального параметра значение соответствующего фактического параметра меняется. Массивы всегда передаются по ссылке. При передаче по ссылке в функцию передается адрес параметра, а внутри функции все обращения к параметру неявно разыменовываются.

Параметры, перечисленные в заголовке описания функции, называются формальными или просто параметрами, а записанные в операторе вызова функции – фактическими или просто аргументами.





Дата публикования: 2015-02-03; Прочитано: 244 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...