Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 373; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.12.154.133 (0.009 с.) |