Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Проблемы при возвращении ссылки или указателя. ⇐ ПредыдущаяСтр 10 из 10
int *f1(int n) int &f2(int n) int main() Нельзя возвращать адреса локальных объектов. Возвращать можно: 1) указатель или ссылку на объект со статическим временем существования; 2) указатель на строковый литерал; 3) указатель на динамически созданный объект.
Ключевое слово const. void func (const int *pn); // позволяет объявлять функции с ключевым словом const Такое объявление параметра обеспечивает неизменяемость объекта, на который указывает pn, то есть это позволяет компилятору блокировать нежелательные побочные эффекты вызова функции. void func1 (const char *pc)
1) при объявлении константных параметров ключевое слово const должно фигурировать как в объявлении функции, так и в ее определении; 2) нет необходимости объявлять с идентефикатором const параметры, которые представляют значение объекта, так как функция получает только копии исходных переменных. void func(const int n); “Перегрузка” имён функции. Перегрузка – одна из особенностей C++, которая позволяет использовать одно и то же имя для разных функций. Этот механизм возможен ввиду того, что функции с одним и тем же именем, но с разным количеством и разными типами параметров компилятор декорирует по-разному.
Ограничение в использовании перегрузки: 1) не могут перегружаться функции, имеющие совпадающий тип и число аргументов, но разные типы возвращающих значений; 2) не могут перегружаться функции, имеющие неявно совпадающие типы аргументов. int MaxInt(int x; int y)
main()
main() Возможный конфликт при использовании параметров по умолчанию. void f(int x, int y = 0); void f (int); int main () { f (2, 5); // ошибка f (5); // ошибка, компилятор не знает, какую функцию вызывать. } Рекурсивные функции. Вызывают сами себя. Происходит выполнение одного и того же кода с разными наборами данных.
Каждое выполнение тела функции имеет свою область стека для параметров и локальных переменных. Достоинства: Ø компактность. Недостатки: Ø большие затраты времени на вызов функции; Ø большие затраты памяти (стека) для организации каждого вложенного цикла. Специфика рекурсивных функций: 1) программист должен обеспечивать выход из рекурсии; 2) по мере возможности следует избегать использования с рекурсивной функцией локальных переменных.
Структуры Си. В большом количестве случаев удобно обращаться к совокупности переменных Структура языка Си – средство для укрупнения данных. Объявление структуры – описание компилятором шаблона, по которому он будет создавать объект данного типа. struct имя Создание объектов структуры. Создание объектов пользовательского типа выглядит так же, как создание переменной базового типа. student vasya; Си: struct student vasya; Присваивание значений полям структуры. vasya. age=20; Создание структур – типов данных. Применяется при программировании на языке Си и используется для создания своих собственных типов данных. typedef struct Инициализация структур. [struct] student Ira ={“Irina”, 2, 0, 19, …}; Замечание: инициализация указывается в том порядке, в котором соответствующие поля объявлены в структуре. Инициализация массивов структур похожа на инициализацию многомерных массивов. { Действия со структурами. Компилятор умеет создавать копии существующих объектов и присваивать одному, уже существующему объекту, значение другого. [struct] student Balabanov1={“Anton”, 2, 0, 19, …}; Указатели и структуры. [struct] student *man1=new[struct] student; Для обращения к полям структуры посредством указателя используется селектор ->(минус больше) strcpy(man1->name, “Yan”);
|
||||||
Последнее изменение этой страницы: 2021-12-15; просмотров: 37; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.85.33 (0.009 с.) |