Заагч
Лекц 3
• Çààãч ãýäýã áîë åð íü ïðîãðàììчëàëûí õýë, òýð äóíäàà C++-èéí ñàëøã¿é
чóõàë õýñã¿¿äèéí íýã þì. Ýíý á¿ëýãò çààãчèéí òóõàé îéëãîëòîîñ ýõëýýä
ò¿¿íèéã àøèãëàõ õýä õýäýí æèøýýòýé òàíèëöàõ þì.
• Çààãчèéã äàðààõ åðºíõèé òîõèîëäóóäàä àøèãëàäàã þì.
- Îëîí ýëåìåíòòýé ìàññèâò õàíäàõ
- Ïàðàìåòð íü ººðчëºãääºã ôóíêöèéã çîõèîæ àøèãëàõ
- Ìàññèâ áîëîí òýìäýãò ìºðèéã ôóíêöèéí àðãóìåíòýä ºãºõ
- Ñèñòåìýýñ ñàíàõ îé “õóëãàéëàõ”
- “Õîëáîîñò ìîä”, “Äàðààëàë” çýðýã á¿òö¿¿äèéã ¿¿ñãýõ
Çààãчèéã äàðààõ òóí ýíãèéí îéëãîëòîîñ ýõëýæ ñóäëàÿ.
• Êîìïüþòåðèéí ñàíàõ îéä áàéãàà áàéò á¿ð ººðèéí õàÿãòàé áàéäàã. Õàÿã
ãýäýã íü ÿã ë áàéøèíãèéí õàÿãòàé èæèë îéëãîëò þì. ª.õ. õàÿã íü 0-ýýñ
ýõëýýä 1, 2, 3 ãýõ ìýòчèëýí ¿ðãýëæèëíý. Õýðâýý êîìïüþòåðèéí ñàíàõ îé
òàíü 640KB áîë õàÿã íü 655359-ººð, õàðèí 1MB áîë 1048575-ààð òóñ òóñ
äóóñíà ãýñýí ¿ã.
• ßìàð ч ïðîãðàìì àæèëëàõûí òóëä äèñêíýýñ ñàíàõ îéä àчààëàãäàõ áºãººä
èíãýñíýýðýý ñàíàõ îéí òîäîðõîé õýñýã õàÿãèéã ýçýëæ àâäàã. ª.õ
ïðîãðàììûí á¿õ êîììàíäóóä áîëîí ºãºäë¿¿ä ñàíàõ îéí àëü íýã õàÿã äýýð
áàéðëàõ áîëíî ãýñýí ¿ã.
ÕÀЯÃ ÀÂÀÕ ‘&’ ÎÏÅÐÀÒÎÐ
Ýíýõ¿¿ îïåðàòîðûã àøèãëàí òà õóâüñàã÷èéí ñàíàõ îéä áàéðëàæ áàéãàà õàÿãèéã àâàõ
áîëîìæòîé áîëíî. Ýíý îïåðàòîðûã varaddr ãýñýí äîîðõ æèøýýíä àøèãëàæ ¿ç¿¿ëæýý.
- //varaddr.cpp
- #include <iostream.h>
- void main()
- {
- int var1=11;
- int var2=22;
- int var3=33;
- cout << endl << &var1
- << endl << &var2
- << endl << &var3;
- }
Ýíý ïðîãðàììä 3 õóâüñàã÷ òîäîðõîéëæ, àíõíû óòãóóäûã îíîîæýý. Õàðèí ñ¿¿ëèéí ìºðºíä ýäãýýð 3
õóâüñàã÷èéí ñàíàõ îéä áàéðëàæ áàéãàà õàÿãóóäûã õýâëýæ áàéíà.
- Õóâüñàã÷èéí æèíõýíý õàÿã íü ìàø îëîí ç¿éëýýñ õàìààðíà.
Óã êîìïüþòåðò áàéãàà ¿éëäëèéí ñèñòåìèéí õýìæýý,
òóõàéí ¿åä ñàíàõ îéä àæèëëàæ áàéãàà ïðîãðàììóóäûí òîî
áîëîí õýìæýý ã.ì. Òèéì ó÷ðààñ ýíý ïðîãðàìì àæèëëàõ á¿ðäýý
èæèë õàÿã õýâëýõã¿é áàéæ áîëíî. Ïðîãðàììûí ¿ð ä¿íãèéí
íýã æèøýý íü:
- 0x8f4ffff4
- 0x8f4ffff2
- 0x8f4ffff0
- Õóâüñàã÷èéí õàÿã ãýäýã áîë ò¿¿íèé óòãà áèø
ãýäãèéã ìàðòàæ áîëîõã¿é. Äýýðõ 3 õóâüñàã÷èéí óòãà íü
õàðãàëçàí 11, 22, 33 þì. (Õàðèí õàÿã íü ýäãýýð òîîíóóäàä
îãò õàìààã¿é!)
Ýíä õýâëýãäñýí óòãóóä íü ºìíºº ‘0x’ ãýñýí áàéãàà íü óã òîî 16-òûí
ñèñòåìýýð õàðàãäàæ áàéãààã èëýðõèéëæ áàéãàà þì. Åð
íü ñàíàõ îéí õàÿã èõýâ÷ëýí 16-òûí ñèñòåìýýð èëýðõèéëýãääýã.
Ýíä àíõààðàõ ãàíö ç¿éë íü 3 õàÿã ãóðâóóëàà èæèë ýõýëñýí
áºãººä õîîðîíäîî çºâõºí 2 áàéòààð ë ÿëãààòàé áàéíà. ¯¿íèé ó÷èð
íü int òºðºë ñàíàõ îéä 2 áàéò ýçýëäãýýð òàéëáàðëàãäàíà.
(65535 õ¿ðòýë òîîã èëýðõèéëýõèéí òóëä 16 áèò áóþó 2 áàéò)
Áèä char òºðëèéí õóâüñàã÷ òîäîðõîéëñîí áîë 1 áàéòààð,
double òºðëèéí õóâüñàã÷ òîäîðõîéëñîí 8 áàéòààð õàÿã íü
øèëæèíý ãýñýí ¿ã þì.
- ̺í õàÿãóóä áóóðàõ äàðààëëààð áàéðëàñàí áàéãààã
àíçààðàõ õýðýãòýé. Ïðîãðàììûí ýõýíä òîäîðõîéëñîí õóâüñàã÷óóä
stack-ò (òºãñãºëººñºº ýõëýë ð¿¿ãýý ÿâäàã) ñàíàõ îéä
õàäãàëàãääàãò ãîë ó÷èð áàéãàà þì. Õàðèí ïðîãðàììûí ÿâöàä
òîäîðõîéëîãäñîí õóâüñàã÷èä íü heap ãýæ íýðëýãäýõ
ýõëýëýýñýý òºãñãºë ð¿¿ãýý ÿâäàã ñàíàõ îéä áàéðëàäàã.
- Õàÿã àâàõ & îïåðàòîðûã ôóíêöèéí ïàðàìåòðò áè÷èãääýã &
îïåðàòîðòîé àíäóóð÷ îéëãîæ áîëîõã¿é.
ÇÀÀÃЧ ÕÓÂÜÑÀÃЧ
• Õàðèí ïðîãðàììä çàéëøã¿é øààðäàãäàõ íýã ç¿éë áîë õóâüñàã÷èéí
õàÿãèéã õàäãàëæ áàéäàã õóâüñàã÷ þì. Áèä á¿õýë, áóòàðõàé,
òýìäýãò ãýýä îëîí òºðºë ¿çñýí áèëýý. Òýãâýë îäîî õàÿã õàäãàëäàã
çààã÷ ãýñýí òºðëèéã íýìæ ¿çüå.
• Çààã÷ õóâüñàã÷èéí òºðºë íü çààæ áàéãàà õóâüñàã÷èéíõàà
òºðºëòýé àäèë áàéíà ãýæ îéëãîæ áîëîõã¿é. ª.õ. int òºðëèéí çààã÷
íü int-òýé èæèë õýìæýýíèé ñàíàõ îé ýçëýõã¿é. Ýíý òóõàé
äàðààãèéí æèøýýí äýýð òàéëáàðëàÿ.
//ptrvar.cpp
#include <iostream.h>
void main()
{
int var1=11;
int var2=22;
cout << endl << &var1 << endl << &var2;
int *ptr;
ptr=&var1;
cout << endl << ptr;
ptr=&var2;
cout << endl << ptr;
}
Ýíý ïðîãðàìì var1, var2 ãýñýí õóâüñàã÷óóä òîäîðõîéëæ, õàðãàëçàí
11, 22 ãýñýí óòãóóä îíîîæýý. Äàðàà íü òýäãýýðèéí õàÿãèéã õýâëýñýí
áàéíà. ¯¿íèé äàðàà ptr ãýñýí çààã÷ õóâüñàã÷ òîäîðõîéëñîí áàéíà.
Ýíä áàéãàà (*) íü çààã÷ ãýñýí óòãà ñàíààã èëýðõèéëíý. ª.õ ‘ptr
õóâüñàã÷èéí int òºðëèéí õóâüñàã÷èéí õàÿãèéã
õàäãàëíà’, ýñâýë ‘ptr õóâüñàã÷ íü int òºðëèéí õóâüñàã÷ ðóó çààíà
’ ãýñýí ¿ã. Õàðèí ÿìàð ÷ òºðëèéí õóâüñàã÷èéã çààæ ÷àäàõ
çààã÷èéã äîîðõ áàéäëààð òîäîðõîéëäîã.
pointer ptr;
Ýíý òîõèîëäîëä çààã÷èéí óòãà äýýð ¿éëäýë õèéõäýý òóí
àíõààðàëòàé áàéõ øààðäëàãàòàé áîëíî.
Бèä çààã÷ õóâüñàã÷ òîäîðõîéëîõäîî (*) òýìäãèéã õóâüñàã÷èéíõàà
íýðýíä îéðõîí áè÷ñýí áàéíà. Óã íü õààíà ÷ áàéðëàæ áîëîõ áîëîâ÷ ýíý íü
òºðºë人 áèø õóâüñàã÷äàà õàìààòàé ãýñýí óòãà ñàíààã
èëýðõèéëýõèéí òóëä èéì áè÷ëýãèéã àøèãëàäàã áàéíà. ªºðººð
õýëáýë, äîîðõ áè÷ëýã¿¿ä õºðâ¿¿ëýã÷ êîìïèëÿòîðûí õóâüä îãò
ÿëãààã¿é ãýñýí ¿ã.
• float *fptr;
• float * fptr;
• float* fptr;
Çààã÷èéí óòãûí òóõàéä
Áèäíèé ¿çñýí æèøýýíä var1 ãýñýí õóâüñàã÷èä 11 ãýñýí óòãà îíîîæ áàéñàí. ¯¿íòýé
ÿã àäèëààð ptr õóâüñàã÷èéí óòãà íü 0x8f4ffff4 ãýх ìýò÷èëýí ñàíàõ îéí õàÿã
áàéõ ¸ñòîé þì.
Çààã÷èéã àíõëàí òîäîðõîéëîõîä òýð íü ÿìàð ÷ óòãàã¿é áàéäàã. ªºðººð õýëáýë
ÿìàð ÷ ñàíàõ îé ðóó çààãààã¿é áàéõ áîëíî. Ìàãàäã¿é ýíý íü ÿìàð íýãýí óòãàòàé
áàéæ áîëîõ áºãººä ãýõäýý òýð íü æèíõýíý ¸ñîîðîî îëãîãäîîã¿é, õóäëàà õàÿã áàéõ
þì. Òèéì ó÷ðààñ áèä çààã÷äàà þóíû ºìíº óòãà îëãîõ õýðýãòýé áîëíî.
ªìíºõ ptrvar ãýñýí æèøýýíä
Ptr=&var1;
ãýæ óòãà îíîîæ áàéãàà þì. ¯¿íèé äàðàà õýâëýãäýæ áàéãàà óòãà
íü var1õóâüñàã÷èéí ñàíàõ îéä áàéðëàæ áàéãàà õàÿã áèëýý.
Ýнэ нь çààã÷ õóâüñàã÷ þó çààæ áàéãààãàà îãò ìýäýõã¿é. Ǻâ óòãà îíîîãîîã¿é
òîõèîëäîëä òýðáýýð îãò õ¿ñýýã¿é ãàçàð ðóó, òóõàéëáàë ïðîãðàììûí êîäóóä ðóó
(ºãºãäºë ð¿¿) ÷ þì óó, ¿éëäëèéí ñèñòåìèéí õýñýã ð¿¿ çààæ áàéæ áîëîõ þì. Ýíý
¿åä òýð õàÿã ðóó þì áè÷âýýñ ñèñòåìèéã ãàöàõ õ¿ðòýë áàéäàëä îðóóëæ
áîëîõûã ¿ðãýëæ ñàíàæ áàé. Èéì ó÷ðààñ çààã÷ õóâüñàã÷èä çààâàë óòãà îíîîæ
áàéõ õýðýãòýé.
ÇÀÀÆ ÁÓÉ ÕÓÂÜÑÀÃЧÈÄ ÕÀÍÄÀÕ ÍÜ
Áèä ÿìàð íýãýí õóâüñàã÷èéí íýðèéã ìýäýõã¿é ÷ õàÿãèéã íü ìýääýã áîëëîî. Òýãâýë òýð õóâüñàã÷èéí
óòãûã “îðîëäîæ” áîëîõ óó?. Òýãâýë õóâüñàã÷èéí íýðèéã ìýäýõã¿é ÷ õàÿãèéã íü àøèãëàí óòãàòàé íü
àæèëëàæ áîëíî ãýæ õàðèóëíà. Äîîðõ ptracc ãýñýí æèøýýã ¿çüå.
//ptracc.cpp
#include <iostream.h>
void main()
{
int var1=11 ;
int var2=22 ;
int *ptr ;
ptr=&var1 ;
cout << endl << *ptr;
ptr=&var2 ;
cout << endl << *ptr;
}
Ýíý æèøýý íü ¿¿íèé ºìíºõ ptrvar æèøýýòýé òóí òºñòýé
õàðàãäàâ÷ ýíä òóí æààõàí ÿëãàà áèé. ªìíºõ æèøýýíä
õàÿãóóäûã íü õýâëýæ áàéñàí áîë ýíý óäààä óã õàÿãàí äýýðõ
óòãóóäûã õýâëýæ áàéíà. ¯ð ä¿í íü:
11
22
¯¿íèéã õýâëýæ áàéãàà ìºðºíä ptr õóâüñàã÷èéí ºìíº îä òàâüñàí
áàéãàà íü çààã÷èéí óòãûã áóñ, õàðèí óòãà áîëæ áóé ñàíàõ
îéí õàÿãàí äýýðõ óòãûã àâíà ãýæ õýëæ áàéãàà þì. Èéì
ó÷ðààñ ptr íü var1 -èéã çààæ áàéãàà ¿åä *ptr íü 11 ãýñýí
óòãà, ptr íü var2 –èéã çààæ áàéãàà ¿åä *ptr íü 22 ãýñýí
óòãàòàé áàéãàà þì.
Èéì îä àøèãëàñíààð òà çºâõºí óòãûã õýâëýõ áèø, òýð
õóâüñàã÷ äýýð õèéæ áîëîõ á¿õ ¿éëäëèéã ã¿éöýòãýõ
áîëîìæòîé áîëíî. Äîîðõ æèøýýã àíõààðàëòàé ¿çýõýä ¿¿íèéã
ìýäýæ áîëíî.
//ptrto.cpp
#include <iostream.h>
void main()
{
int var1, var2;
int *ptr;
ptr=&var1;
*ptr=37;
var2=*ptr;
cout << endl << var1 << “,” << var2 ;
}
¯ð ä¿í íü:
37, 37
ãýæ áàéíà. ªºðººð õýëáýë, ýíý
òîõèîëäîëä var1=37, *ptr=37 ãýñýí ¿éëäë¿¿ä
íü ÿã èæèë ãýñýí ¿ã þì.
¯¿íèéã íýã àìüäðàëûí æèøýýí äýýð
òàéëáàðëàÿ. Òà íàéçäàà çàõèà áè÷ýýä
ò¿¿íèéãýý íàéçûíõàà øóóäàíãèéí
õàéðöàãò øóóä õèé÷èõýæ áîëíî. Ýñâýë
äóãòóéä õèéãýýä øóóäàíãèéí àëáàíä
àâàà÷èæ ºã÷ áîëíî, òýãâýë øóóäàí 纺ã÷ óã
çàõèàã ò¿¿íèé õàéðöàãò õèéíý. Ýíý õî¸ð
ïðîöåññ èæèë ¿ð ä¿íòýé áîëîâ÷, ººð àðãààð
õèéãäýæ áàéãàà áèëýý. Ýõíèé òîõèîëäîëä
øóóä, 2 äàõü òîõèîëäîëä äàìæóóëàí
õàíäàæ áàéãàà õýðýã þì. Áèäíèé ¿çñýí
æèøýýíä áèä õóâüñàã÷ààð øóóä õàíäàõûí
îðîíä, çààã÷ àøèãëàæ áàéãàà íü çààã÷èéí
¿¿ðãèéã îíö èõ îéëãóóëàõã¿é áàéæ áîëîõ
þì. Ãýõäýý õîéíî ¿çýõ á¿ëã¿¿äýä çààã÷èéí
æèíõýíý ¿¿ðã¿¿ä áóþó õàíäàæ áîëîõã¿é
ãàçàð ðóó õàíäàõ òóõàé ¿çýõ áîëíî.
VOID ÇÀÀÃЧ
Çààã÷èéí ¿¿ðãèéí òóõàé öààø ¿çýõèéí ºìíº çààã÷èéí íýãýí ñîíèí òºðëèéí òóõàé ¿çüå. Áèäíèé ¿çñýíýýð çààã÷èä õàÿã îëãîõäîî çºâõºí òààðàõ òºðëèéí
õóâüñàã÷èéí ë õàÿãèéã ºãºõ ¸ñòîé. Òóõàéëáàë, int òºðëèéí çààã÷èä float òºðëèéí õóâüñàã÷èéí õàÿãèéã ºã÷ áîëîõã¿é. Ãýòýë íýãýí öàãò ÿìàð ÷
òºðëèéí õóâüñàã÷èéã çààæ ÷àäàõ çààã÷ õýðýã áîëîõ íü çàéëøã¿é. Ýíý ¿åä äîîðõ áàéäëààð òîäîðõîéëñîí void çààã÷èéã àøèãëàäàã þì.
void *ptr;
Äîîðõ æèøýýíä èéì òîäîðõîéã¿é çààã÷èéã òºðºëòýé çààã÷èéí îðîíä õýðõýí õýðýãëýõèéã ¿ç¿¿ëæ áàéíà.
//ptrvoid.cpp
#include <iostream.h>
void main()
{
int intvar;
float flovar;
int *ptrint;
float *ptrflo;
void *ptrvoid;
ptrint=&intvar;
ptrint=&flovar;
ptrvoid=&intvar;
ptrvoid=&flovar;
}
Ptrvoid íü òîäîðõîéã¿é çààã÷ ó÷ðààñ äóðûí òºðëèéí õóâüñàã÷èéí õàÿãèéã àâ÷ ÷àäàæ áàéíà.
Заагч ба Массив
Çààã÷ áîëîí ìàññèâ íü õîîðîíäîî òóí ÷óõàë õàìààðàëòàé òºðë¿¿ä þì. Áÿöõàí äàâòëàãà áîëãîæ arrnote æèøýýã
¿çüå.
//arrnote.cpp
#include <iostream.h>
void main()
{
int intarray[5]={31, 54, 77, 52, 93};
for (int j=0; j<5; j++)
cout << endl << intarray[j];
}
Ýíý æèøýý íü ìàññèâûí ýëåìåíò¿¿äèéã äàðààëàí õýâëýæ áàéíà. Æèøýý íü, jíü 3 óòãàòàé áàéõàä intarray [ 3
] áóþó ìàññèâûí 4 äýõ ýëåìåíòýä õàíäàíà. ¯ð ä¿í íü:
31
54
77
52
93
Òýãâýë çààã÷ õóâüñàã÷ íü ìàññèâûí
ýëåìåíòýä äýýðõ àðãààð èë¿¿ îéëãîìæòîé
õàíääàãèéã äàðààõ æèøýý õàðóóëíà.
//ptrnote.cpp
#include <iostream.h>
void main()
{
int intarray[5]={31, 54, 77, 52, 93};
for (int j=0; j<5; j++)
cout << endl << *(intarray+j) ;
}
• Ïðîãðàììûí ¿ð ä¿í ºìíºõººñ îãò ÿëãààã¿é.
Ìàññèâûí íýð ãýäýã áîë áóñàä õóâüñàã÷èéí
íýãýí àäèë óã ìàññèâûí õàÿãèéã ºãºõ áºãººä
õàðèí j øèëæèëòèéã íýìñíýýð
ìàññèâûí j ä¿ãýýð ýëåìåíòèéã çààõ áîëíî.
Ãýòýë ýíä íýã ç¿éë àíõààðàõ
õýðýãòýé. Intarray áîë ìàññèâûí ýõëýëèéí
õàÿã, õàðèí ìàññèâ íü int òºðëèéíõ. Òýãýõýýð
íýã ýëåìåíò íü 2 áàéò ýçëýíý, ãýòýë áèä
ýõëýëýýñ íü j*2 áèø, åð人 j áàéò øèëæ¿¿ëæ
áàéãàà áèëýý. Èíãýõýýð j=4 áàéõ ¿åä áèä 4-
ð ýëåìåíò áèø, 2-ð ýëåìåíòýä õàíäàõ áîëîõ íü
ýý. Ãýõäýý ¿¿íä ñàíàà á¿¿ çîâ. C++-èéí
êîìïèëÿòîð íü ýíý “àëäààã” ººðºº çàëðóóëäàã
àæýý. ª.õ. intarray ãýäýã áîë int ìàññèâ
ó÷ðààñ ò¿¿íèé çààã÷èéí øèëæèëò íü 2
áàéòààð ÿâàõ ¸ñòîé ãýæ îéëãîäîã áàéíà.
Èíãýýä çààã÷èéã òîäîðõîéëîõäîî òºðëèéã íü
çààæ ºãºõèéí áàñ íýã îíöëîãèéã ìýäýæ
àâëàà. Int òºðëèéí çààã÷èéí øèëæèëò íü 2
áàéòààð, double òºðëèéí çààã÷èéí
øèëæèëò íü 8 áàéòààð áàéíà ãýñýí ¿ã þì.
ÇÀÀÃЧ ÒÎÃÒÌÎËÓÓÄ ÁÀ ÇÀÀÃЧ ÕÓÂÜÑÀÃЧÓÓÄ
• J-ã intarray äýýð íýìýõèéí îðîíä øóóä íýìýãä¿¿ëýõ (++) îïåðàòîð
àøèãëàæ áîëîõ óó?
• Ýíý àñóóëòàíä áîëîõã¿é ãýæ õàðèóëíà. Ó÷èð íü òîãòìîëûí óòãûã
ººð÷èëæ áîëîõã¿é. Intarray ãýäýã áîë ñèñòåìýýñ óã ìàññèâò îíîîæ
ºãñºí ñàíàõ îéí õàÿã áºãººä ïðîãðàìì äóóñòàë intarray –èéí óòãà
ººð÷ëºãäºõã¿é, òýð ÷èãýýðýý áàéõ ¸ñòîé. Intarray òîãòìîë
ó÷ðààñ intarray++ ãýñýí ¿éëäýë íü 7++ ãýñíýýñ îãò ÿëãààã¿é
õýðýã áîëíî (Õàðèí windows àæèëëàæ áàéõ ¿åä ñèñòåì ýíý
õóâüñàã÷èéí õàÿãèéã àâòîìàòààð ñîëüæ áîëíî. Ãýõäýý ýíý ÿâö
áèäýíä îãò ìýäýãäýõã¿é.). Õàðèí õàÿãèéã ººð÷èëæ áîëîõã¿é ÷
ò¿¿í ð¿¿ çààñàí çààã÷èéã ººð÷èëæ áîëíî ãýäãèéã äàðàà÷èéí
æèøýýíýýñ ¿çýæ áîëíî.
//ptrinc.cpp
#include <iostream.h>
void main()
{
int intarray[5]={31, 54, 77, 52, 93};
int *ptrint;
ptrint=intarray;
for (int j=0; j<5; j++)
cout << endl << *(ptrint++) ;
}
Áèä ptrint õóâüñàã÷ òîäîðõîéëæ, óã
õóâüñàã÷èä ìàññèâûí õàÿãèéã ºãñíººð
ìàññèâûí á¿õ ýëåìåíòýä *( ptrint++ )
ãýñýí ¿éëäëýýð äàðààëàí õ¿ðýõ
áîëîìæ îëæ áàéãàà þì. Ptrint áîë òîãòìîë
áèø ó÷ðààñ ººð÷ëºãäºæ áîëæ áàéíà.
Заагч ба функц
• Õýðýâ ôóíêö íü àðãóìåíòäýý èðæ
áàéãàà õóâüñàã÷èéí ¿íäñýí ïðîãðàìì
äàõü óòãûã ººð÷ëºõ øààðäëàãàòàé
áîë ò¿¿íèéã ýíãèéí óòãà àðãóìåíòýýð
äàìæóóëæ áîëîõã¿é. Ó÷èð íü èéì
àðãóìåíòèéí óòãûí õóóëáàð íü ë
ôóíêöýä èðäýã. Õàðèí ýíý òîõèîëäîëä
çààã÷ àðãóìåíòèéã àøèãëàõ
õýðýãòýé.
ÕÓÂÜÑÀÃЧÈÉÃ ÔÓÍÊÖÝÄ ÄÀÌÆÓÓËÀÕ
Áèäíèé ºìíº ¿çñýíýýð ôóíêöèéí àðãóìåíòèéã õî¸ðäîã÷ íýðýýð äàìæóóëæ áîëíî.
Äîîðõ æèøýýíýýñ ¿¿íèéã õàðöãààÿ.
//passref.cpp
#include <iostream.h>
void main()
{
void centimize(double &);
double var=10.0
cout << endl << “var=“ << var << “ inches”;
centimize(var);
cout << endl << “var=“ << var << “ centimeters”;
}
void centimize(double& v)
{
v *=2.54;
}
Ýíý æèøýýíä var ãýñýí õóâüñàã÷èéí óòãûã èí÷ýýñ ñàíòèìåòð ë¿¿ õºðâ¿¿ëæ
áàéíà. Centimize ôóíêöèéí ïàðàìåòðò øóóä ë õóâüñàã÷èéã äàìæóóëíà
(ãýõäýý ººð íýðýýð!). ªºðººð õýëáýë, v áà var õóâüñàã÷óóä íü íýã ç¿éëèéí
õî¸ð íýð áîëæ áàéãàà þì. Äýýðõ ïðîãðàììûí ¿ð ä¿í:
var=10 inches
var=25.4 centimeters
Õàðèí îäîî çààã÷àà àøèãëàæ ¿çüå.
//passptr.cpp
#include <iostream.h>
void main()
{
void centimize(double *);
double var=10.0
cout << endl << “var=“ << var << “ èí÷”;
centimize(&var);
cout << endl << “var=“ << var << “ ñì”;
}
void centimize(double* v)
{
*v *=2.54;
}
¯ð ä¿í íü ºìíºõòýéãýý ÿã àäèëõàí áàéõ áîëíî. Õàðèí ýíý òîõèîëäîëä ÿìàð íýãýí
óòãà áóñ, ÿìàð íýãýí õóóðàì÷ íýð ÷ áóñ, õàðèí õóâüñàã÷èéí õàÿã äàìæèõ
þì. Ôóíêö äîòðîîñ ýíý õàÿãàíä õàíäàõ íü ôóíêöèéí ãàäíà áàéãàà õóâüñàã÷èä
õàíäàíà ãýñýí ¿ã. Õàðèí ýíä áàéãàà îëîí (*)-íû õîîðîíä áóäèëæ áîëîõã¿é. ( *v *
= 2.54 ãýñýí íü *v = *v * 2.54 –òýé àäèë ¿éëäýë) Ôóíêö äîòîð *v-òýé
àæèëëàíà ãýäýã íü ôóíêöèéí ãàäíàõ var –òàé àæèëëàõòàé ÿã èæèëõýí áîëíî.
Õî¸ðäîã÷ íýðýýð äàìæóóëàõ, çààã÷ààð äàìæóóëàõ íü êîìïèëÿòîðûí õóâüä ÿã
èæèë ¿éëäýë áîëîâ÷ õàðàãäàõ áàéäëààðàà òýñ ººð õî¸ð ìåõàíèçì þì.

Lecture 3

  • 1.
  • 2.
    • Çààãч ãýäýãáîë åð íü ïðîãðàììчëàëûí õýë, òýð äóíäàà C++-èéí ñàëøã¿é чóõàë õýñã¿¿äèéí íýã þì. Ýíý á¿ëýãò çààãчèéí òóõàé îéëãîëòîîñ ýõëýýä ò¿¿íèéã àøèãëàõ õýä õýäýí æèøýýòýé òàíèëöàõ þì. • Çààãчèéã äàðààõ åðºíõèé òîõèîëäóóäàä àøèãëàäàã þì. - Îëîí ýëåìåíòòýé ìàññèâò õàíäàõ - Ïàðàìåòð íü ººðчëºãääºã ôóíêöèéã çîõèîæ àøèãëàõ - Ìàññèâ áîëîí òýìäýãò ìºðèéã ôóíêöèéí àðãóìåíòýä ºãºõ - Ñèñòåìýýñ ñàíàõ îé “õóëãàéëàõ” - “Õîëáîîñò ìîä”, “Äàðààëàë” çýðýã á¿òö¿¿äèéã ¿¿ñãýõ Çààãчèéã äàðààõ òóí ýíãèéí îéëãîëòîîñ ýõëýæ ñóäëàÿ. • Êîìïüþòåðèéí ñàíàõ îéä áàéãàà áàéò á¿ð ººðèéí õàÿãòàé áàéäàã. Õàÿã ãýäýã íü ÿã ë áàéøèíãèéí õàÿãòàé èæèë îéëãîëò þì. ª.õ. õàÿã íü 0-ýýñ ýõëýýä 1, 2, 3 ãýõ ìýòчèëýí ¿ðãýëæèëíý. Õýðâýý êîìïüþòåðèéí ñàíàõ îé òàíü 640KB áîë õàÿã íü 655359-ººð, õàðèí 1MB áîë 1048575-ààð òóñ òóñ äóóñíà ãýñýí ¿ã. • ßìàð ч ïðîãðàìì àæèëëàõûí òóëä äèñêíýýñ ñàíàõ îéä àчààëàãäàõ áºãººä èíãýñíýýðýý ñàíàõ îéí òîäîðõîé õýñýã õàÿãèéã ýçýëæ àâäàã. ª.õ ïðîãðàììûí á¿õ êîììàíäóóä áîëîí ºãºäë¿¿ä ñàíàõ îéí àëü íýã õàÿã äýýð áàéðëàõ áîëíî ãýñýí ¿ã.
  • 3.
    ÕÀЯà ÀÂÀÕ ‘&’ÎÏÅÐÀÒÎÐ Ýíýõ¿¿ îïåðàòîðûã àøèãëàí òà õóâüñàã÷èéí ñàíàõ îéä áàéðëàæ áàéãàà õàÿãèéã àâàõ áîëîìæòîé áîëíî. Ýíý îïåðàòîðûã varaddr ãýñýí äîîðõ æèøýýíä àøèãëàæ ¿ç¿¿ëæýý. - //varaddr.cpp - #include <iostream.h> - void main() - { - int var1=11; - int var2=22; - int var3=33; - cout << endl << &var1 - << endl << &var2 - << endl << &var3; - } Ýíý ïðîãðàììä 3 õóâüñàã÷ òîäîðõîéëæ, àíõíû óòãóóäûã îíîîæýý. Õàðèí ñ¿¿ëèéí ìºðºíä ýäãýýð 3 õóâüñàã÷èéí ñàíàõ îéä áàéðëàæ áàéãàà õàÿãóóäûã õýâëýæ áàéíà.
  • 4.
    - Õóâüñàã÷èéí æèíõýíýõàÿã íü ìàø îëîí ç¿éëýýñ õàìààðíà. Óã êîìïüþòåðò áàéãàà ¿éëäëèéí ñèñòåìèéí õýìæýý, òóõàéí ¿åä ñàíàõ îéä àæèëëàæ áàéãàà ïðîãðàììóóäûí òîî áîëîí õýìæýý ã.ì. Òèéì ó÷ðààñ ýíý ïðîãðàìì àæèëëàõ á¿ðäýý èæèë õàÿã õýâëýõã¿é áàéæ áîëíî. Ïðîãðàììûí ¿ð ä¿íãèéí íýã æèøýý íü: - 0x8f4ffff4 - 0x8f4ffff2 - 0x8f4ffff0 - Õóâüñàã÷èéí õàÿã ãýäýã áîë ò¿¿íèé óòãà áèø ãýäãèéã ìàðòàæ áîëîõã¿é. Äýýðõ 3 õóâüñàã÷èéí óòãà íü õàðãàëçàí 11, 22, 33 þì. (Õàðèí õàÿã íü ýäãýýð òîîíóóäàä îãò õàìààã¿é!)
  • 5.
    Ýíä õýâëýãäñýí óòãóóäíü ºìíºº ‘0x’ ãýñýí áàéãàà íü óã òîî 16-òûí ñèñòåìýýð õàðàãäàæ áàéãààã èëýðõèéëæ áàéãàà þì. Åð íü ñàíàõ îéí õàÿã èõýâ÷ëýí 16-òûí ñèñòåìýýð èëýðõèéëýãääýã. Ýíä àíõààðàõ ãàíö ç¿éë íü 3 õàÿã ãóðâóóëàà èæèë ýõýëñýí áºãººä õîîðîíäîî çºâõºí 2 áàéòààð ë ÿëãààòàé áàéíà. ¯¿íèé ó÷èð íü int òºðºë ñàíàõ îéä 2 áàéò ýçýëäãýýð òàéëáàðëàãäàíà. (65535 õ¿ðòýë òîîã èëýðõèéëýõèéí òóëä 16 áèò áóþó 2 áàéò) Áèä char òºðëèéí õóâüñàã÷ òîäîðõîéëñîí áîë 1 áàéòààð, double òºðëèéí õóâüñàã÷ òîäîðõîéëñîí 8 áàéòààð õàÿã íü øèëæèíý ãýñýí ¿ã þì. - ̺í õàÿãóóä áóóðàõ äàðààëëààð áàéðëàñàí áàéãààã àíçààðàõ õýðýãòýé. Ïðîãðàììûí ýõýíä òîäîðõîéëñîí õóâüñàã÷óóä stack-ò (òºãñãºëººñºº ýõëýë ð¿¿ãýý ÿâäàã) ñàíàõ îéä õàäãàëàãääàãò ãîë ó÷èð áàéãàà þì. Õàðèí ïðîãðàììûí ÿâöàä òîäîðõîéëîãäñîí õóâüñàã÷èä íü heap ãýæ íýðëýãäýõ ýõëýëýýñýý òºãñãºë ð¿¿ãýý ÿâäàã ñàíàõ îéä áàéðëàäàã. - Õàÿã àâàõ & îïåðàòîðûã ôóíêöèéí ïàðàìåòðò áè÷èãääýã & îïåðàòîðòîé àíäóóð÷ îéëãîæ áîëîõã¿é.
  • 6.
    ÇÀÀÃЧ ÕÓÂÜÑÀÃЧ • Õàðèíïðîãðàììä çàéëøã¿é øààðäàãäàõ íýã ç¿éë áîë õóâüñàã÷èéí õàÿãèéã õàäãàëæ áàéäàã õóâüñàã÷ þì. Áèä á¿õýë, áóòàðõàé, òýìäýãò ãýýä îëîí òºðºë ¿çñýí áèëýý. Òýãâýë îäîî õàÿã õàäãàëäàã çààã÷ ãýñýí òºðëèéã íýìæ ¿çüå. • Çààã÷ õóâüñàã÷èéí òºðºë íü çààæ áàéãàà õóâüñàã÷èéíõàà òºðºëòýé àäèë áàéíà ãýæ îéëãîæ áîëîõã¿é. ª.õ. int òºðëèéí çààã÷ íü int-òýé èæèë õýìæýýíèé ñàíàõ îé ýçëýõã¿é. Ýíý òóõàé äàðààãèéí æèøýýí äýýð òàéëáàðëàÿ.
  • 7.
    //ptrvar.cpp #include <iostream.h> void main() { intvar1=11; int var2=22; cout << endl << &var1 << endl << &var2; int *ptr; ptr=&var1; cout << endl << ptr; ptr=&var2; cout << endl << ptr; }
  • 8.
    Ýíý ïðîãðàìì var1,var2 ãýñýí õóâüñàã÷óóä òîäîðõîéëæ, õàðãàëçàí 11, 22 ãýñýí óòãóóä îíîîæýý. Äàðàà íü òýäãýýðèéí õàÿãèéã õýâëýñýí áàéíà. ¯¿íèé äàðàà ptr ãýñýí çààã÷ õóâüñàã÷ òîäîðõîéëñîí áàéíà. Ýíä áàéãàà (*) íü çààã÷ ãýñýí óòãà ñàíààã èëýðõèéëíý. ª.õ ‘ptr õóâüñàã÷èéí int òºðëèéí õóâüñàã÷èéí õàÿãèéã õàäãàëíà’, ýñâýë ‘ptr õóâüñàã÷ íü int òºðëèéí õóâüñàã÷ ðóó çààíà ’ ãýñýí ¿ã. Õàðèí ÿìàð ÷ òºðëèéí õóâüñàã÷èéã çààæ ÷àäàõ çààã÷èéã äîîðõ áàéäëààð òîäîðõîéëäîã. pointer ptr; Ýíý òîõèîëäîëä çààã÷èéí óòãà äýýð ¿éëäýë õèéõäýý òóí àíõààðàëòàé áàéõ øààðäëàãàòàé áîëíî. Бèä çààã÷ õóâüñàã÷ òîäîðõîéëîõäîî (*) òýìäãèéã õóâüñàã÷èéíõàà íýðýíä îéðõîí áè÷ñýí áàéíà. Óã íü õààíà ÷ áàéðëàæ áîëîõ áîëîâ÷ ýíý íü òºðºë人 áèø õóâüñàã÷äàà õàìààòàé ãýñýí óòãà ñàíààã èëýðõèéëýõèéí òóëä èéì áè÷ëýãèéã àøèãëàäàã áàéíà. ªºðººð õýëáýë, äîîðõ áè÷ëýã¿¿ä õºðâ¿¿ëýã÷ êîìïèëÿòîðûí õóâüä îãò ÿëãààã¿é ãýñýí ¿ã. • float *fptr; • float * fptr; • float* fptr;
  • 9.
    Çààã÷èéí óòãûí òóõàéä Áèäíèé¿çñýí æèøýýíä var1 ãýñýí õóâüñàã÷èä 11 ãýñýí óòãà îíîîæ áàéñàí. ¯¿íòýé ÿã àäèëààð ptr õóâüñàã÷èéí óòãà íü 0x8f4ffff4 ãýх ìýò÷èëýí ñàíàõ îéí õàÿã áàéõ ¸ñòîé þì. Çààã÷èéã àíõëàí òîäîðõîéëîõîä òýð íü ÿìàð ÷ óòãàã¿é áàéäàã. ªºðººð õýëáýë ÿìàð ÷ ñàíàõ îé ðóó çààãààã¿é áàéõ áîëíî. Ìàãàäã¿é ýíý íü ÿìàð íýãýí óòãàòàé áàéæ áîëîõ áºãººä ãýõäýý òýð íü æèíõýíý ¸ñîîðîî îëãîãäîîã¿é, õóäëàà õàÿã áàéõ þì. Òèéì ó÷ðààñ áèä çààã÷äàà þóíû ºìíº óòãà îëãîõ õýðýãòýé áîëíî. ªìíºõ ptrvar ãýñýí æèøýýíä Ptr=&var1; ãýæ óòãà îíîîæ áàéãàà þì. ¯¿íèé äàðàà õýâëýãäýæ áàéãàà óòãà íü var1õóâüñàã÷èéí ñàíàõ îéä áàéðëàæ áàéãàà õàÿã áèëýý. Ýнэ нь çààã÷ õóâüñàã÷ þó çààæ áàéãààãàà îãò ìýäýõã¿é. Ǻâ óòãà îíîîãîîã¿é òîõèîëäîëä òýðáýýð îãò õ¿ñýýã¿é ãàçàð ðóó, òóõàéëáàë ïðîãðàììûí êîäóóä ðóó (ºãºãäºë ð¿¿) ÷ þì óó, ¿éëäëèéí ñèñòåìèéí õýñýã ð¿¿ çààæ áàéæ áîëîõ þì. Ýíý ¿åä òýð õàÿã ðóó þì áè÷âýýñ ñèñòåìèéã ãàöàõ õ¿ðòýë áàéäàëä îðóóëæ áîëîõûã ¿ðãýëæ ñàíàæ áàé. Èéì ó÷ðààñ çààã÷ õóâüñàã÷èä çààâàë óòãà îíîîæ áàéõ õýðýãòýé.
  • 10.
    ÇÀÀÆ ÁÓÉ ÕÓÂÜÑÀÃЧÈÄÕÀÍÄÀÕ ÍÜ Áèä ÿìàð íýãýí õóâüñàã÷èéí íýðèéã ìýäýõã¿é ÷ õàÿãèéã íü ìýääýã áîëëîî. Òýãâýë òýð õóâüñàã÷èéí óòãûã “îðîëäîæ” áîëîõ óó?. Òýãâýë õóâüñàã÷èéí íýðèéã ìýäýõã¿é ÷ õàÿãèéã íü àøèãëàí óòãàòàé íü àæèëëàæ áîëíî ãýæ õàðèóëíà. Äîîðõ ptracc ãýñýí æèøýýã ¿çüå. //ptracc.cpp #include <iostream.h> void main() { int var1=11 ; int var2=22 ; int *ptr ; ptr=&var1 ; cout << endl << *ptr; ptr=&var2 ; cout << endl << *ptr; }
  • 11.
    Ýíý æèøýý íü¿¿íèé ºìíºõ ptrvar æèøýýòýé òóí òºñòýé õàðàãäàâ÷ ýíä òóí æààõàí ÿëãàà áèé. ªìíºõ æèøýýíä õàÿãóóäûã íü õýâëýæ áàéñàí áîë ýíý óäààä óã õàÿãàí äýýðõ óòãóóäûã õýâëýæ áàéíà. ¯ð ä¿í íü: 11 22 ¯¿íèéã õýâëýæ áàéãàà ìºðºíä ptr õóâüñàã÷èéí ºìíº îä òàâüñàí áàéãàà íü çààã÷èéí óòãûã áóñ, õàðèí óòãà áîëæ áóé ñàíàõ îéí õàÿãàí äýýðõ óòãûã àâíà ãýæ õýëæ áàéãàà þì. Èéì ó÷ðààñ ptr íü var1 -èéã çààæ áàéãàà ¿åä *ptr íü 11 ãýñýí óòãà, ptr íü var2 –èéã çààæ áàéãàà ¿åä *ptr íü 22 ãýñýí óòãàòàé áàéãàà þì. Èéì îä àøèãëàñíààð òà çºâõºí óòãûã õýâëýõ áèø, òýð õóâüñàã÷ äýýð õèéæ áîëîõ á¿õ ¿éëäëèéã ã¿éöýòãýõ áîëîìæòîé áîëíî. Äîîðõ æèøýýã àíõààðàëòàé ¿çýõýä ¿¿íèéã ìýäýæ áîëíî.
  • 12.
    //ptrto.cpp #include <iostream.h> void main() { intvar1, var2; int *ptr; ptr=&var1; *ptr=37; var2=*ptr; cout << endl << var1 << “,” << var2 ; } ¯ð ä¿í íü: 37, 37 ãýæ áàéíà. ªºðººð õýëáýë, ýíý òîõèîëäîëä var1=37, *ptr=37 ãýñýí ¿éëäë¿¿ä íü ÿã èæèë ãýñýí ¿ã þì. ¯¿íèéã íýã àìüäðàëûí æèøýýí äýýð òàéëáàðëàÿ. Òà íàéçäàà çàõèà áè÷ýýä ò¿¿íèéãýý íàéçûíõàà øóóäàíãèéí õàéðöàãò øóóä õèé÷èõýæ áîëíî. Ýñâýë äóãòóéä õèéãýýä øóóäàíãèéí àëáàíä àâàà÷èæ ºã÷ áîëíî, òýãâýë øóóäàí 纺ã÷ óã çàõèàã ò¿¿íèé õàéðöàãò õèéíý. Ýíý õî¸ð ïðîöåññ èæèë ¿ð ä¿íòýé áîëîâ÷, ººð àðãààð õèéãäýæ áàéãàà áèëýý. Ýõíèé òîõèîëäîëä øóóä, 2 äàõü òîõèîëäîëä äàìæóóëàí õàíäàæ áàéãàà õýðýã þì. Áèäíèé ¿çñýí æèøýýíä áèä õóâüñàã÷ààð øóóä õàíäàõûí îðîíä, çààã÷ àøèãëàæ áàéãàà íü çààã÷èéí ¿¿ðãèéã îíö èõ îéëãóóëàõã¿é áàéæ áîëîõ þì. Ãýõäýý õîéíî ¿çýõ á¿ëã¿¿äýä çààã÷èéí æèíõýíý ¿¿ðã¿¿ä áóþó õàíäàæ áîëîõã¿é ãàçàð ðóó õàíäàõ òóõàé ¿çýõ áîëíî.
  • 13.
    VOID ÇÀÀÃЧ Çààã÷èéí ¿¿ðãèéíòóõàé öààø ¿çýõèéí ºìíº çààã÷èéí íýãýí ñîíèí òºðëèéí òóõàé ¿çüå. Áèäíèé ¿çñýíýýð çààã÷èä õàÿã îëãîõäîî çºâõºí òààðàõ òºðëèéí õóâüñàã÷èéí ë õàÿãèéã ºãºõ ¸ñòîé. Òóõàéëáàë, int òºðëèéí çààã÷èä float òºðëèéí õóâüñàã÷èéí õàÿãèéã ºã÷ áîëîõã¿é. Ãýòýë íýãýí öàãò ÿìàð ÷ òºðëèéí õóâüñàã÷èéã çààæ ÷àäàõ çààã÷ õýðýã áîëîõ íü çàéëøã¿é. Ýíý ¿åä äîîðõ áàéäëààð òîäîðõîéëñîí void çààã÷èéã àøèãëàäàã þì. void *ptr; Äîîðõ æèøýýíä èéì òîäîðõîéã¿é çààã÷èéã òºðºëòýé çààã÷èéí îðîíä õýðõýí õýðýãëýõèéã ¿ç¿¿ëæ áàéíà. //ptrvoid.cpp #include <iostream.h> void main() { int intvar; float flovar; int *ptrint; float *ptrflo; void *ptrvoid; ptrint=&intvar; ptrint=&flovar; ptrvoid=&intvar; ptrvoid=&flovar; } Ptrvoid íü òîäîðõîéã¿é çààã÷ ó÷ðààñ äóðûí òºðëèéí õóâüñàã÷èéí õàÿãèéã àâ÷ ÷àäàæ áàéíà.
  • 14.
    Заагч ба Массив Çààã÷áîëîí ìàññèâ íü õîîðîíäîî òóí ÷óõàë õàìààðàëòàé òºðë¿¿ä þì. Áÿöõàí äàâòëàãà áîëãîæ arrnote æèøýýã ¿çüå. //arrnote.cpp #include <iostream.h> void main() { int intarray[5]={31, 54, 77, 52, 93}; for (int j=0; j<5; j++) cout << endl << intarray[j]; } Ýíý æèøýý íü ìàññèâûí ýëåìåíò¿¿äèéã äàðààëàí õýâëýæ áàéíà. Æèøýý íü, jíü 3 óòãàòàé áàéõàä intarray [ 3 ] áóþó ìàññèâûí 4 äýõ ýëåìåíòýä õàíäàíà. ¯ð ä¿í íü: 31 54 77 52 93
  • 15.
    Òýãâýë çààã÷ õóâüñàã÷íü ìàññèâûí ýëåìåíòýä äýýðõ àðãààð èë¿¿ îéëãîìæòîé õàíääàãèéã äàðààõ æèøýý õàðóóëíà. //ptrnote.cpp #include <iostream.h> void main() { int intarray[5]={31, 54, 77, 52, 93}; for (int j=0; j<5; j++) cout << endl << *(intarray+j) ; } • Ïðîãðàììûí ¿ð ä¿í ºìíºõººñ îãò ÿëãààã¿é. Ìàññèâûí íýð ãýäýã áîë áóñàä õóâüñàã÷èéí íýãýí àäèë óã ìàññèâûí õàÿãèéã ºãºõ áºãººä õàðèí j øèëæèëòèéã íýìñíýýð ìàññèâûí j ä¿ãýýð ýëåìåíòèéã çààõ áîëíî. Ãýòýë ýíä íýã ç¿éë àíõààðàõ õýðýãòýé. Intarray áîë ìàññèâûí ýõëýëèéí õàÿã, õàðèí ìàññèâ íü int òºðëèéíõ. Òýãýõýýð íýã ýëåìåíò íü 2 áàéò ýçëýíý, ãýòýë áèä ýõëýëýýñ íü j*2 áèø, åð人 j áàéò øèëæ¿¿ëæ áàéãàà áèëýý. Èíãýõýýð j=4 áàéõ ¿åä áèä 4- ð ýëåìåíò áèø, 2-ð ýëåìåíòýä õàíäàõ áîëîõ íü ýý. Ãýõäýý ¿¿íä ñàíàà á¿¿ çîâ. C++-èéí êîìïèëÿòîð íü ýíý “àëäààã” ººðºº çàëðóóëäàã àæýý. ª.õ. intarray ãýäýã áîë int ìàññèâ ó÷ðààñ ò¿¿íèé çààã÷èéí øèëæèëò íü 2 áàéòààð ÿâàõ ¸ñòîé ãýæ îéëãîäîã áàéíà. Èíãýýä çààã÷èéã òîäîðõîéëîõäîî òºðëèéã íü çààæ ºãºõèéí áàñ íýã îíöëîãèéã ìýäýæ àâëàà. Int òºðëèéí çààã÷èéí øèëæèëò íü 2 áàéòààð, double òºðëèéí çààã÷èéí øèëæèëò íü 8 áàéòààð áàéíà ãýñýí ¿ã þì.
  • 16.
    ÇÀÀÃЧ ÒÎÃÒÌÎËÓÓÄ ÁÀÇÀÀÃЧ ÕÓÂÜÑÀÃЧÓÓÄ • J-ã intarray äýýð íýìýõèéí îðîíä øóóä íýìýãä¿¿ëýõ (++) îïåðàòîð àøèãëàæ áîëîõ óó? • Ýíý àñóóëòàíä áîëîõã¿é ãýæ õàðèóëíà. Ó÷èð íü òîãòìîëûí óòãûã ººð÷èëæ áîëîõã¿é. Intarray ãýäýã áîë ñèñòåìýýñ óã ìàññèâò îíîîæ ºãñºí ñàíàõ îéí õàÿã áºãººä ïðîãðàìì äóóñòàë intarray –èéí óòãà ººð÷ëºãäºõã¿é, òýð ÷èãýýðýý áàéõ ¸ñòîé. Intarray òîãòìîë ó÷ðààñ intarray++ ãýñýí ¿éëäýë íü 7++ ãýñíýýñ îãò ÿëãààã¿é õýðýã áîëíî (Õàðèí windows àæèëëàæ áàéõ ¿åä ñèñòåì ýíý õóâüñàã÷èéí õàÿãèéã àâòîìàòààð ñîëüæ áîëíî. Ãýõäýý ýíý ÿâö áèäýíä îãò ìýäýãäýõã¿é.). Õàðèí õàÿãèéã ººð÷èëæ áîëîõã¿é ÷ ò¿¿í ð¿¿ çààñàí çààã÷èéã ººð÷èëæ áîëíî ãýäãèéã äàðàà÷èéí æèøýýíýýñ ¿çýæ áîëíî.
  • 17.
    //ptrinc.cpp #include <iostream.h> void main() { intintarray[5]={31, 54, 77, 52, 93}; int *ptrint; ptrint=intarray; for (int j=0; j<5; j++) cout << endl << *(ptrint++) ; } Áèä ptrint õóâüñàã÷ òîäîðõîéëæ, óã õóâüñàã÷èä ìàññèâûí õàÿãèéã ºãñíººð ìàññèâûí á¿õ ýëåìåíòýä *( ptrint++ ) ãýñýí ¿éëäëýýð äàðààëàí õ¿ðýõ áîëîìæ îëæ áàéãàà þì. Ptrint áîë òîãòìîë áèø ó÷ðààñ ººð÷ëºãäºæ áîëæ áàéíà. Заагч ба функц • Õýðýâ ôóíêö íü àðãóìåíòäýý èðæ áàéãàà õóâüñàã÷èéí ¿íäñýí ïðîãðàìì äàõü óòãûã ººð÷ëºõ øààðäëàãàòàé áîë ò¿¿íèéã ýíãèéí óòãà àðãóìåíòýýð äàìæóóëæ áîëîõã¿é. Ó÷èð íü èéì àðãóìåíòèéí óòãûí õóóëáàð íü ë ôóíêöýä èðäýã. Õàðèí ýíý òîõèîëäîëä çààã÷ àðãóìåíòèéã àøèãëàõ õýðýãòýé.
  • 18.
    ÕÓÂÜÑÀÃЧÈÉà ÔÓÍÊÖÝÄ ÄÀÌÆÓÓËÀÕ Áèäíèéºìíº ¿çñýíýýð ôóíêöèéí àðãóìåíòèéã õî¸ðäîã÷ íýðýýð äàìæóóëæ áîëíî. Äîîðõ æèøýýíýýñ ¿¿íèéã õàðöãààÿ. //passref.cpp #include <iostream.h> void main() { void centimize(double &); double var=10.0 cout << endl << “var=“ << var << “ inches”; centimize(var); cout << endl << “var=“ << var << “ centimeters”; } void centimize(double& v) { v *=2.54; } Ýíý æèøýýíä var ãýñýí õóâüñàã÷èéí óòãûã èí÷ýýñ ñàíòèìåòð ë¿¿ õºðâ¿¿ëæ áàéíà. Centimize ôóíêöèéí ïàðàìåòðò øóóä ë õóâüñàã÷èéã äàìæóóëíà (ãýõäýý ººð íýðýýð!). ªºðººð õýëáýë, v áà var õóâüñàã÷óóä íü íýã ç¿éëèéí õî¸ð íýð áîëæ áàéãàà þì. Äýýðõ ïðîãðàììûí ¿ð ä¿í: var=10 inches var=25.4 centimeters Õàðèí îäîî çààã÷àà àøèãëàæ ¿çüå. //passptr.cpp #include <iostream.h> void main() { void centimize(double *); double var=10.0 cout << endl << “var=“ << var << “ èí÷”; centimize(&var); cout << endl << “var=“ << var << “ ñì”; } void centimize(double* v) { *v *=2.54; } ¯ð ä¿í íü ºìíºõòýéãýý ÿã àäèëõàí áàéõ áîëíî. Õàðèí ýíý òîõèîëäîëä ÿìàð íýãýí óòãà áóñ, ÿìàð íýãýí õóóðàì÷ íýð ÷ áóñ, õàðèí õóâüñàã÷èéí õàÿã äàìæèõ þì. Ôóíêö äîòðîîñ ýíý õàÿãàíä õàíäàõ íü ôóíêöèéí ãàäíà áàéãàà õóâüñàã÷èä õàíäàíà ãýñýí ¿ã. Õàðèí ýíä áàéãàà îëîí (*)-íû õîîðîíä áóäèëæ áîëîõã¿é. ( *v * = 2.54 ãýñýí íü *v = *v * 2.54 –òýé àäèë ¿éëäýë) Ôóíêö äîòîð *v-òýé àæèëëàíà ãýäýã íü ôóíêöèéí ãàäíàõ var –òàé àæèëëàõòàé ÿã èæèëõýí áîëíî. Õî¸ðäîã÷ íýðýýð äàìæóóëàõ, çààã÷ààð äàìæóóëàõ íü êîìïèëÿòîðûí õóâüä ÿã èæèë ¿éëäýë áîëîâ÷ õàðàãäàõ áàéäëààðàà òýñ ººð õî¸ð ìåõàíèçì þì.