Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Передача значения простого аргумента в функцию.Содержание книги
Поиск на нашем сайте Способы передачи простых данных в функцию Данные в функции передаются по значению, адресу. Любое данное имеет текущее значение и адрес. Если из вызывающей функции передается текущее значение аргумента в пользовательскую функцию, то его можно анализировать(if, switch,циклы) или использовать в вычислениях. Если из вызывающей функции передается адрес аргумента в пользовательскую функцию, то можно анализировать текущее значение аргумента, использовать в вычислениях или изменять аргумент. Передача в функцию значения аргумента Пусть в функцию хотим передать значение int … func(int a,…) { // используем a для анализа или вычисления return …; } int main(void) { int A;// объявили аргумент cin>>A;// определили аргумент … func(A);// передали текущее значение аргумента … } // При передачи по значению исходные данные из функции main заносятся в параметры функции. Функция производит действия над параметрами, => над копиями исходных данных, передаваемых из функции main. Следовательно, изнутри мы не можем изменить исходные данные. Обратной связи нет.
Задача: написать программу с функцией, вычисляющей S треугольника по формуле Герона. Анализ характеристик функций: 1) название функции – Geron 2) исходные данные: a, b, c типы исходных данных -> double a, double b, double c 3) результат функции S -> double
Geron.cpp: #include<math.h> double Geron(double a, double b, double c) // копирование значений А, B и C { double S, P; P=(a+b+c)/2; S=sqrt(P*(P-a)*(P-b)*(P-c)); return S; }
Geron.h:
#ifndef GERON_H #define GERON_H double Geron(double a, double b, double c); #endif
main.cpp:
#include<iostream> using namespace std; #include “Geron.h” int main(void) { double A, B, C, S; cin>>A>>B>>C; S=Geron(A,B,C); cout<<S<<endl; return 0; } + Передача из функции пользователя двух и более результатов. Написать схематично программу с функцией, возвращающей результат (целое число) через параметр - ссылку. Передача исходных данных в функцию ссылки на аргумент Ссылка – константный адрес другой переменный или альтернативное имя другой переменной. int &rA=A;// объявляется ссылка rA, которая сразу инициализируется переменной А Если ссылка – параметр функции, то после вызова её ссылка инициализируется аргументом. Имя ссылки и аргумент указывают на одну и ту же область памяти: изменяется ссылка–> изменяется аргумент. Ссылка часто используется для передачи из функции дополнительных результатов.
// При объявлении ссылки она обязательно инициализируется именем другого объекта (адресата) и с этого момента становится альтернативным именем адресата. Ссылку нельзя переназначать. Ссылка только ссылается на один объект. При передаче по ссылке экономится память и есть прямой доступ к аргументу. При необходимости аргумент можно защитить от изменения: const int &rA; //
Пусть из функции необходимо передать дополнительный результат целого типа. … func(…, ТипРезультата &result) // создается &result=result, { … result=результату; // передача результата … } int main(void) { ТипРезультата result; … … func(…, result); cout<<result<<endl; … }
Написать программу, в которой для данного прямоугольника вычисляется периметр и площадь.
double Pram(double a, double b, double &S) { double P; P=2*(a+b); S=a*b;// вычислили и передали площадь
return P; }
int main(void) { double A, B, P, S; cin>>A>>B; P=Pram(A,B,S); cout<<"S="<<S<<endl; cout<<"P="<<P<<endl; return 0; }
Задача: переписать функцию swap с применением ссылок void swap(int &rA, int &rB) { int x; x=rA; rA=rB; rB=x; } int main(void) { int A, B; cin>>A>>B; swap(A,B); cout<<A<<" "<<B<<endl; return 0; }
Выводы: 1) в функцию передаем значение аргумента, если в ней не надо изменять аргумент и он занимает небольшой объем памяти 2) в функцию передаем ссылку на её константный объект, если аргумент не надо изменять в функции, но он занимает большой объем памяти 3) в функцию передаем ссылку или адрес аргумента(через указатель), если аргумент внутри функции необходимо изменить (для передачи дополнительного результата) + 33*Передача адреса простого аргумента в функцию. Написать схематично программу с функцией, возвращающей результат (вещественное число) через параметр - указатель. Передача в функцию адреса аргумента Передавая адрес аргумента, мы можем не только извлекать текущее значение аргумента и выполнять с ним действия, но и изменять аргумент. Этот механизм используется для передачи из функции дополнительных результатов. Передача данных по адресу.
Пусть из функции необходимо передать результат целого типа Необходимо: · Объявить в функции main переменную целого типа под результат. · В функции main в операторе вызова этой функции в качестве соответствующего аргумента передать адрес объявленной переменной. · В имени функции и в прототипе объявить параметр указатель на целый тип. · Внутри функции вычислить результат и записать его значение по указанному в параметре адресу. … func(…, int *result) // параметр является указателем, *result=&result { … *result=результату;// возвратили результат функции через параметр … }
int main(void) { int result; //переменная целого типа под результат. … … func(…, &result); // передали в функцию адрес переменной res cout<<result<<endl; … }
Написать функцию, в которой две переменные обмениваются своими значениями. void Swap(int *p1, int *p2) { int a; a=*p1; *p1=*p2; *p2=a; return; }
int main(void) { int A, B; cin>>A>>B; Swap(&A, &B); cout<<A<<" "<<B<<endl; return 0; } +
|
|||||
|
Последнее изменение этой страницы: 2016-06-06; просмотров: 466; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.006 с.) |