Студопедия

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

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

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






Структуры

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

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

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

Пример:

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 :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.