Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
}
Функция Div находит результат и остаток от деления параметра N1 на N2. Результат деления возвращается через имя функции, а остаток через параметр Ost.
Для того чтобы обеспечить возвращение вычисленного внутри функции остатка, соответствующий параметр функции определен как указатель (int *Ost). При вызове функции в качестве аргумента для этого параметра был использован адрес переменной &O, а не само значение переменной O. При вычислении остатка внутри функции выполняется разыменование параметра Ost (*Ost - обращение по адресу, хранящемуся в параметре Ost), и вычисленный остаток записывается по этому адресу (то есть в переменную O). Таким образом, значение переменной O изменяется.
В принципе здесь также используется передача данных по значению. Но в качестве значения используется адрес аргумента, а не само значение аргумента. И далее в функции осуществляется работа со значением аргумента путем обращения к нему через его адрес.
Таким образом, для использования передачи данных с помощью указателей необходимо обязательно выполнить три следующих пункта:
1. Соответствующий параметр в заголовке функции необходимо определить как указатель на тип данных аргумента.
2. При вызове функции на месте параметров-указателей необходимо использовать адрес аргумента, а не сам аргумент.
3. При обращении внутри функции к значению аргумента через параметр-указатель необходимо осуществить разыменование этого указателя.
Несколько проще обстоит дело с передачей массивов, так как переменные типа массив сами являются указателями на первый элемент массива. В связи с этим отпадает необходимость в выполнении пунктов 2 и 3 из перечисленных выше. Рассмотрим пример:
void ReadArr (int *P, int n)
{
for (int I = 0; I < n; ++I)
cin >> P[I];
}
void WriteArr (int Arr[], int n)
{
for (int I = 0; I < n; ++I)
cout << Arr[I] << “ “;
cout << endl;
}
Дата публикования: 2014-11-28; Прочитано: 204 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!