Параметры функции по умолчанию
Nbsp; Программирование на языке Visual C++
Функции
(http://msdn.microsoft.com/ru-ru/library/c4d5ssht.aspx)
(http://msdn.microsoft.com/ru-ru/library/9w92dxk3.aspx)
Рис.6.1. Использование символа «Предопределенный процесс» в схемах алгоритмов для обозначения обращения к подпрограмме | Рис.6.2. Использование символа «Терминатор» в схемах алгоритмов для обозначения начала и конца подпрограммы |
Определение функций
Синтаксис определения функции имеет следующий вид:
Тип ИмяФункции([Список_формальных_параметров])
{ Операторы_тела_функции }
Для объявления функции используется ее прототип, который представляет собой заголовок функции, завершающийся точкой с запятой.
Тип ИмяФункции([Список_формальных_параметров]);
Пример 6.1. Демонстрация некоторых способов использования функции power() при передаче ей аргументов различными способами.
#include "stdafx.h"
using namespace System;
Double power(double x, int n); // Прототип функции.
int main(array<System::String^>^ args) {
int index = 3; // Показатель степени.
double х = 3.0; // Переменная, возводимая в степень.
Использование констант в качестве аргументов.
double у = power(5.0, 3);
Console::WriteLine("5.0 в кубе = {0}", у);
Вывод возвращенного значения.
Console::WriteLine("3.0 в кубе = {0}", power(3.0, index));
Использование функции в качестве аргумента
х = power(х, static_cast<int>(power(2.0, 2.0)));
Console::WriteLine("х = {0}", х);
Console::ReadLine();
return 0;
}
// Функция для возведения х в степень n, где n >= 0.
|
|
double power(double x, int n) { // Заголовок функции.
Тело функции.
double result = 1.0;
for (int i = 1; i <= n; i++) // Вычисление
result *= x; // функции.
Return result; // Результат, возвращаемый функцией.
}
/* Вывод:
5.0 в кубе = 125
3.0 в кубе = 27
х = 81
*/
Пример 6.2. Определение функций и их вызов из программы для выполнения математических операций с целыми числами.
#include "stdafx.h"
using namespace System;
int SumNumbers(int number1, int number2) {
return number1 + number2;
}
int SquareNumber(int number) {
return number * number;
}
int main(array<System::String^>^ args) {
int result = SquareNumber(SumNumbers(1, 2));
// или int result = SumNumbers(1, 2);
// result = SquareNumber(result);
Console::WriteLine("(1+2)^2={0}", result); // Вывод: (1+2)^2=9
Console::ReadLine();
return 0;
}
Вызов функции и передача параметров
Способы передачи параметров
Пример 6.3. Применение различных способов передачи параметров при использовании функций.
#include "stdafx.h"
using namespace System;
// Передача параметра по значению.
void SquareVal(int valParam) {
valParam *= valParam;
return;
}
// Передача параметра по ссылке.
void SquareRef(int& refParam) {
refParam *= refParam;
return;
}
// Передача параметра по ссылке (с иниц-ей параметра в функции)
void strCurrentDate(String^& curDate) {
DateTime dt = DateTime::Now;
curDate = dt.Date.ToString("dd.MM.yyyy");
return;
|
|
}
int main(array<System::String^>^ args) {
int arg = 4;
SquareVal(arg); // Передача параметра по значению
Console::WriteLine(arg); // Вывод: 4 (параметр не изменился)
SquareRef(arg); // Передача параметра по ссылке
Console::WriteLine(arg); // Вывод: 16 (параметр изменился)
String^ cd;
StrCurrentDate(cd); // Передача параметра по ссылке
Console::WriteLine(cd); // Вывод: 19.12.2011
Console::ReadLine();
return 0;
}
Функции с побочным эффектом
Например, если функция int f(int& a) является функцией с побочным эффектом, то выражение а + f(а) в общем случае не эквивалентно выражению f(а) + а .
Параметры функции по умолчанию
Пример 6.4. Использование необязательных параметров при вызове функции, вычисляющей сумму двух, трех или четырех чисел (работает, начиная с версии Visual C++ 2010).
#include "stdafx.h"
using namespace System;
int Sum(int a, int b, int c=0, int d=0) {
return a + b + c + d;
}
int main(array<System::String^>^ args) {
int x=11, y=13, z=17, p=19;
Дата добавления: 2018-06-01; просмотров: 217; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!