Сілтемелік параметр
Сілтемелік параметр
Сілтемелік параметрі автоматты түрде қатысты аргумент адресін
қабылдайды. Аргумент адресін қабылдауды қолдан ұйымдастыруға болғанымен,
мұндай тәсіл қолайлы емес. Біріншіден, мұндай жол программалаушының барлық
операцияны көрсеткіштерді пайдаланып ұйымдастыруға тура келеді. Екіншіден,
функцияны көрсеткенде жоспарлаушы аргументтер мағынасын емес, оның
адрестерін көрсетуді ұмытпаған жөн. С++ программасында компиляторларды
сілтемеге автоматты түрде шақырулар қолдануға және ол нақты бір немесе
бірнеше функциялардың параметріне бағытталады. Бұндай мүмкіншілік
сілтемелік параметрінің арқасында жүзеге асырылады. Функцияның сілтемелік
параметрін пайдаланғанда, аргументтің мағынасы емес, оның адресі беріледі.
Функцияның кодын орындағанда, сілтемелік параметрінің операцияларын
орындағанда, оның атауы автоматты түрде айырбасталады, сондықтан
программалаушыға көрсеткіштермен жұмыс жасайтын операторларды
пайдаланбауына болады.
Сілтемелік параметрі & символымен белгіленеді және ол хабарланған
функция параметрінің атауына сай келуі керек. Сілтемелік параметрінің
операциялары, шақырылған функцияның аргументіне ықпал етеді.
Сілтемелік параметрінің жұмыс істеу механизмін түсіну үшін, қарапайым
мысалды қарастырайық. Келесі программада f( ) функциясы int типті
сілтемелік параметрін қабылдайды.
#include iostream
using namespace std;
void f (int &i);
int main()
{
Int val = 1;
cout ”val айнымалысының ескі мәні: “ val
‘\ n’;
f(val); val айнымалысының адресін f( ) функциясына жібереміз
cout ”val айнымалысының жаңа мәні: “ val
‘\ n’;
Return ( );
}
void f (int &i)
{
i = 10; шақыру кезіндегі аргумент модификациясы
}
Осы программаны орындау кезінде, мынандай нәтиже аламыз:
val айнымалысының ескі мәні: 1
val айнымалысының жаңа мәні: 10
f( ) функциясының анықталуына назар аударыңыз:
void f (int &i);
{
i = 10; шақыру кезіндегі аргумент модификациясы
}
Сонымен, і параметрінің хабарламасын қарастырайық. Оның алдындағы &
белгісі, і айнымалысын сілтемелік параметрге айналдыруға мүмкіндік береді.
(Бұл хабарламаны функция прототипінде де қолданылады). і = 10 нұсқауы і
айнымалысына 10 мәнін қоспайды (бұл жағдайда ол өзі функция денесін
құрайды). Шынында 10 мәні і айнымалысы сілтенетін айнымалымен қосып алынады
(біздің программада val айнымалысы). Назар аударыңыз, бұл нұсқауда
көрсеткіштермен жұмыс істеген кезде “*” қажетті операторы қолданбайды.
Сілтемелік параметрді қолдана отырып, С++ компиляторына адрестің жіберілуін
хабар етесіз, және ол сіздің орныңызға оның атын автоматты түрде өзгертеді.
Егер сіз “*” операторын қолдану арқылы компиляторға көмек берем десеңіз,
онда сол сәтте қате туралы хабарлама береді.
і айнымалысы сілтемелік параметрінде хабарланғандықтан, f( )
функциясына шақырылатын кез-келген аргументтің адресін береді. Осылайша
main ( ) функциясында f (val); f( ) фунуциясына val айнымалысының адресін
береді. Мұнда f( ) функциясын шақыру кезінде, val айнымалысының алдына &
операторын қою қажеті жоқ екеніне назар аударыңыз (бұл жағдайда қате болар
еді). f( ) функциясы val айнымалысының адресін сілтеме түрінде қабылдайтын
болғандықтан, ол осы айнымалының мәнін модификациялай алады.
Сілтемелік параметрлердің нақты қолдануын көрсету үшін, бізге таныс
swap( ) сілтемелі функциясын қолдану арқылы келесі программаны орындаймыз.
#include iostream
using namespace std;
сілтемелік параметрлерді қолданып, swap( ) функциясын енгіземіз.
void swap (int &x, int &y);
int main()
{
int i, j;
i = 10;
j = 20;
cout “і және j айнымалылардың алдынғы мәндері: “;
cout i ‘ ‘ j ‘ \n’ ;
swap (j, i);
cout “і және j айнымалылардың жаңа мәндері: “;
cout i ‘ ‘ j ‘ \n’ ;
return( );
}
void swap (int &x, int &y)
{
int temp;
temp = x; x адресінде орналасқан мәнді сақтаймыз.
x = y; y адресі бойынша сақталған мәнді x адресіне
ауыстырамыз.
y = temp; x адресінде сақталған мәнді y адресіне көшіреміз.
}
Сонымен, x және y айнымалыларын сілтемелік параметрлермен хабарлау,
сізді “*” операторын мәндерді алмастыруды ұйымдастыру кезінде қолданудан
босатады. Компилятор swap( ) функциясын шақыру кезінде қолданылатын
аргумент адрестерін генерациялайды және автоматты түрде x және y
сілтемелерінің атын өзгертеді.
Сілтеменің қайтарымдылығы
Функция сілтемені қайтара алады. Егер функция сілтемені қайтарса,
онда ол return инструкциясына жіберілетін, анықталмаған көрсеткіштің мәнін
қайтарады. Бұл факт таң қаларлық мүмкіндіктерді ашады. С++ программалау
тіліндегі қайтарымды функциялардың сілтемелік мағынасы үшін бірнеше амалдар
қарастырылған.
Сілтеменің қайтарымдылығы.
#include iostream
using namespace std;
double &f( );
double val = 100.0;
int main( ... жалғасы
Сілтемелік параметрі автоматты түрде қатысты аргумент адресін
қабылдайды. Аргумент адресін қабылдауды қолдан ұйымдастыруға болғанымен,
мұндай тәсіл қолайлы емес. Біріншіден, мұндай жол программалаушының барлық
операцияны көрсеткіштерді пайдаланып ұйымдастыруға тура келеді. Екіншіден,
функцияны көрсеткенде жоспарлаушы аргументтер мағынасын емес, оның
адрестерін көрсетуді ұмытпаған жөн. С++ программасында компиляторларды
сілтемеге автоматты түрде шақырулар қолдануға және ол нақты бір немесе
бірнеше функциялардың параметріне бағытталады. Бұндай мүмкіншілік
сілтемелік параметрінің арқасында жүзеге асырылады. Функцияның сілтемелік
параметрін пайдаланғанда, аргументтің мағынасы емес, оның адресі беріледі.
Функцияның кодын орындағанда, сілтемелік параметрінің операцияларын
орындағанда, оның атауы автоматты түрде айырбасталады, сондықтан
программалаушыға көрсеткіштермен жұмыс жасайтын операторларды
пайдаланбауына болады.
Сілтемелік параметрі & символымен белгіленеді және ол хабарланған
функция параметрінің атауына сай келуі керек. Сілтемелік параметрінің
операциялары, шақырылған функцияның аргументіне ықпал етеді.
Сілтемелік параметрінің жұмыс істеу механизмін түсіну үшін, қарапайым
мысалды қарастырайық. Келесі программада f( ) функциясы int типті
сілтемелік параметрін қабылдайды.
#include iostream
using namespace std;
void f (int &i);
int main()
{
Int val = 1;
cout ”val айнымалысының ескі мәні: “ val
‘\ n’;
f(val); val айнымалысының адресін f( ) функциясына жібереміз
cout ”val айнымалысының жаңа мәні: “ val
‘\ n’;
Return ( );
}
void f (int &i)
{
i = 10; шақыру кезіндегі аргумент модификациясы
}
Осы программаны орындау кезінде, мынандай нәтиже аламыз:
val айнымалысының ескі мәні: 1
val айнымалысының жаңа мәні: 10
f( ) функциясының анықталуына назар аударыңыз:
void f (int &i);
{
i = 10; шақыру кезіндегі аргумент модификациясы
}
Сонымен, і параметрінің хабарламасын қарастырайық. Оның алдындағы &
белгісі, і айнымалысын сілтемелік параметрге айналдыруға мүмкіндік береді.
(Бұл хабарламаны функция прототипінде де қолданылады). і = 10 нұсқауы і
айнымалысына 10 мәнін қоспайды (бұл жағдайда ол өзі функция денесін
құрайды). Шынында 10 мәні і айнымалысы сілтенетін айнымалымен қосып алынады
(біздің программада val айнымалысы). Назар аударыңыз, бұл нұсқауда
көрсеткіштермен жұмыс істеген кезде “*” қажетті операторы қолданбайды.
Сілтемелік параметрді қолдана отырып, С++ компиляторына адрестің жіберілуін
хабар етесіз, және ол сіздің орныңызға оның атын автоматты түрде өзгертеді.
Егер сіз “*” операторын қолдану арқылы компиляторға көмек берем десеңіз,
онда сол сәтте қате туралы хабарлама береді.
і айнымалысы сілтемелік параметрінде хабарланғандықтан, f( )
функциясына шақырылатын кез-келген аргументтің адресін береді. Осылайша
main ( ) функциясында f (val); f( ) фунуциясына val айнымалысының адресін
береді. Мұнда f( ) функциясын шақыру кезінде, val айнымалысының алдына &
операторын қою қажеті жоқ екеніне назар аударыңыз (бұл жағдайда қате болар
еді). f( ) функциясы val айнымалысының адресін сілтеме түрінде қабылдайтын
болғандықтан, ол осы айнымалының мәнін модификациялай алады.
Сілтемелік параметрлердің нақты қолдануын көрсету үшін, бізге таныс
swap( ) сілтемелі функциясын қолдану арқылы келесі программаны орындаймыз.
#include iostream
using namespace std;
сілтемелік параметрлерді қолданып, swap( ) функциясын енгіземіз.
void swap (int &x, int &y);
int main()
{
int i, j;
i = 10;
j = 20;
cout “і және j айнымалылардың алдынғы мәндері: “;
cout i ‘ ‘ j ‘ \n’ ;
swap (j, i);
cout “і және j айнымалылардың жаңа мәндері: “;
cout i ‘ ‘ j ‘ \n’ ;
return( );
}
void swap (int &x, int &y)
{
int temp;
temp = x; x адресінде орналасқан мәнді сақтаймыз.
x = y; y адресі бойынша сақталған мәнді x адресіне
ауыстырамыз.
y = temp; x адресінде сақталған мәнді y адресіне көшіреміз.
}
Сонымен, x және y айнымалыларын сілтемелік параметрлермен хабарлау,
сізді “*” операторын мәндерді алмастыруды ұйымдастыру кезінде қолданудан
босатады. Компилятор swap( ) функциясын шақыру кезінде қолданылатын
аргумент адрестерін генерациялайды және автоматты түрде x және y
сілтемелерінің атын өзгертеді.
Сілтеменің қайтарымдылығы
Функция сілтемені қайтара алады. Егер функция сілтемені қайтарса,
онда ол return инструкциясына жіберілетін, анықталмаған көрсеткіштің мәнін
қайтарады. Бұл факт таң қаларлық мүмкіндіктерді ашады. С++ программалау
тіліндегі қайтарымды функциялардың сілтемелік мағынасы үшін бірнеше амалдар
қарастырылған.
Сілтеменің қайтарымдылығы.
#include iostream
using namespace std;
double &f( );
double val = 100.0;
int main( ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz