Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Структуры

    Программирование и алгоритмизация

    Передача параметров по-умолчанию

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

    Пример:

    1. long f1 (int x=20); //прототип функции

    2. long f1 (int = 20);

    3.

    4. //Определение функции

    5. long f1(int x)

    6. {

    7. ­

    8. }

    Если, при вызове функции, аргумент не будет передан, то компилятор присвоит значение x, указанное в прототипе. Имя параметров в прототипе функции и в её определении может не совпадать. Значение заданное по-умолчанию присваивается по позиции, а не по имени.

    Значение по-умолчанию можно назначить любому параметру функции. Но существует определенное ограничение.

    Если какой то параметр не имеет значение по-умолчанию (справа – налево), то никакой следующий за ним параметр не может быть задан по-умолчанию.

    9. long f1(int a, int b, int c); //параметру b можно задать значение по-умолчанию, только если параметр c имеет значение по-умолчанию

    Пример:

    1. int vcube(int length, int width = 25, int h=1);

    2. int main()

    3. {

    4. int length = 20;

    5. int width = 10;

    6. int h=2, volume;

    7. volume = vcube(length, width, h);

    8. cout ≪ volume≪ endl;

    9. volume = vcube(length);

    10. cout ≪ volume≪ endl;

    11. volume = vcube(length, width);

    12. cout ≪ volume≪ endl;

    13. return 0;

    14. }

    Перегрузка функции

    Язык C++ позволяет создавать несколько разных функций с одинаковыми именами – перегрузка функций. Эти функции отличаются друг от друга своей сигнатурой: списком параметров, типом или количеством параметром. Тип возвращаемых значений этих функций может быть одинаковым, а может быть разным.

    1. int f1(int, int);

    2. int f1(long, long);

    3. int f1(long);

    4. float f1(int, long);

    Если компилятор найдет 2 функции с одинаковыми аргументами, но с разным типом возвращаемого значения, он выдаст ошибку

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

    Встраиваемые функции

    Механизм вызова функции языка C добавляет функции в предпроцессор. Иногда не эффективно.

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

    1. inline int parity (int x)

    2. {

    3. return! (x%2);

    4. }

    5. int main()

    6. {

    7. int dig;

    8. printf(“Введите число\n”);

    9. scanf(“%d”, & dig);

    10. if(parity(dig)) printf(“%d – четное\n”, dig);

    11. else printf(“%d – нечетное\n”, dig);

    12. return 0;

    13. }


    Структуры

    В ООП структуры заменяются классами.

    1. struct [тег. структуры]

    2. {

    3. определение типа элемента

    4. определение типа элемента

    5. } список переменных структур

    6. struct st_info

    7. {

    8. char st_name[25];

    9. char address[30];

    10. float sum_stip;

    11. } st2, st2, …., st5; //память под структуру уже выделилась

    12. struct date

    13. {

    14. int date;

    15. int month;

    16. }; //шаблон. память под структуры еще не выделяется

    17. struct date d1, d2, d3; // выделение памяти для переменных типа date

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

    1. typedef обьявление псевдоним

     

    2. typedef struct date

    3. {

    4. int day;

    5. int month;

    6. } DATE; //DATE – псевдоним

    7.

    8. //Разные способы инициализации структуры

    9. struct date today;

    10. DATE today;

    11. date today;

    <== предыдущая лекция | следующая лекция ==>
    Российский рынок. Экспорт и импорт. | 




    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.