Alt linux Программирование на языке С++ в среде Qt Creator Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк, О. В. Чеснокова, А. С. Чмыхало Москва alt linux 2015



Download 5,27 Mb.
Pdf ko'rish
bet52/193
Sana24.02.2022
Hajmi5,27 Mb.
#227496
1   ...   48   49   50   51   52   53   54   55   ...   193
Bog'liq
Book-qtC


Глава 4. Использование функций при программировании на C++
4.2
Передача параметров в функцию
Обмен информацией между вызываемой и вызывающей функциями осу-
ществляется с помощью механизма передачи параметров. Список_переменных,
указанный в заголовке функции, называется формальными параметрами или
просто параметрами функции. Список_переменных в операторе вызова функции
— это фактические параметры или аргументы.
Механизм передачи параметров обеспечивает замену формальных парамет-
ров фактическими параметрами
и позволяет выполнять функцию с различны-
ми данными. Между фактическими параметрами в операторе вызова функции
и формальными параметрами в заголовке функции устанавливается взаимно од-
нозначное соответствие. Количество, типы и порядок следования формальных и
фактических параметров должны совпадать
.
Передача параметров
выполняется следующим образом. Вычисляются выра-
жения, стоящие на месте фактических параметров. В памяти выделяется место
под формальные параметры в соответствии с их типами. Затем формальным па-
раметрам присваиваются значения фактических. Выполняется проверка типов
и при необходимости выполняется их преобразование.
Передача параметров в функцию может осуществляться по значению и по
адресу
.
При передаче данных по значению функция работает с копиями фактиче-
ских параметров, и доступа к исходным значениям аргументов у неё нет. При
передаче данных по адресу в функцию передаётся не переменная, а её адрес, и,
следовательно, функция имеет доступ к ячейкам памяти, в которых хранятся
значения аргументов. Таким образом, данные, переданные по значению, функ-
ция изменить не может, в отличие от данных, переданных по адресу.
Если требуется запретить изменение параметра внутри функции, используют
модификатор const. Заголовок функции в общем виде будет выглядеть так:
тип имя_функции
( const тип_переменной* имя_переменной, ...)
Например:
#include 
using namespace s t d ;
i n t f 1 ( i n t i )
//Данные передаются по значению
{
return ( i ++) ;
}
i n t f 2 ( i n t ∗ j ) //Данные передаются по адресу. При подстановке фактического параметра,
//для получения его значения, применяется операция разадресации * .
{
return ( ( ∗ j )++) ;
}
i n t f 3 ( const i n t ∗ k )
//Изменение параметра не предусмотрено .
{
return ( ( ∗ k )++) ;
}
i n t main ( )
{
i n t a ;
cout<<" a = " ; c i n >>a ;
f 1 ( a ) ;
cout<<" a = "<Программирование на языке С++ в среде Qt Creator


4.2. Передача параметров в функцию
105
f 2 (&a ) ; //Для передачи фактического параметра используется операция взятия адреса & .
cout<<" a = "<f 3 (&a ) ;
cout<<" a = "<return 0 ;
}
Результат работы программы:
Введено значение переменной a.
a=5
Значение переменной a после вызова функции f1 не изменилось.
a=5
Значение переменной a после вызова функции f2 изменилось.
a=6
Значение переменной a после вызова функции f3 не изменилось.
a=6
Удобно использовать передачу данных по адресу, если нужно чтобы функция
изменяла значения переменных в вызывающей программе.
Далее приведён пример программы, в которой исходя из радианной меры
некоторого угла вычисляется величина смежного с ним угла. На экран выво-
дятся значения углов в градусной мере. Функция degree выполняет перевод из
радианной меры в градусную
2
. Эта функция ничего не возвращает. Её аргумен-
тами являются значение переменной rad, определяющее величину угла в радиа-
нах, и адреса переменных deg, min, sec, в которых будут храниться вычисленные
результаты — градусная мера угла.
#include 
#include 
#define PI 3 . 1 4 1 5 9
using namespace s t d ;
void d e g r e e ( double rad , i n t ∗ deg , i n t ∗ min , i n t ∗ s e c )
{
∗ deg= f l o o r ( rad ∗180/ PI ) ;
∗min=f l o o r ( ( rad ∗180/ PI −(∗ deg ) ) ∗ 6 0 ) ;
∗ s e c=f l o o r ( ( ( rad ∗180/ PI −(∗ deg ) ) ∗60 −(∗min ) ) ∗ 6 0 ) ;
}
i n t main ( )
{
i n t DEG, MIN, SEC ; double RAD;
cout<<" I n p o u t : "<c o u t << " V a l u e in r a d i a n A = " ; c i n >>RAD;
d e g r e e (RAD,&DEG,&MIN,&SEC) ;
c o u t << DEG<<" "<d e g r e e ( PI−RAD,&DEG,&MIN,&SEC) ;
c o u t << DEG<<" "<return 0 ;
}
2
Чтобы найти градусную меру угла по заданной радианной, нужно помножить число ра-
диан на
180
π
; если из полученной дроби выделить целую часть, то получим градусы; если из
числа полученного умножением оставшейся дробной части на 60, выделить целую часть, по-
лучим минуты; секунды вычисляются аналогично из дробной части минут.
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.


106
Download 5,27 Mb.

Do'stlaringiz bilan baham:
1   ...   48   49   50   51   52   53   54   55   ...   193




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish