Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Проблемы при возвращении ссылки или указателя.Содержание книги
Поиск на нашем сайте
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; просмотров: 84; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.20 (0.007 с.) |