Mustaqil ish Mavzu: С/С++ дастурлаш тилида кўрсаткичлар билан боғлиқ муаммолар. Dasturiy vositalar xavfsizligi


short int *p=new short[5]; long * q=new long [5]


Download 348.42 Kb.
bet7/9
Sana21.04.2023
Hajmi348.42 Kb.
#1374143
TuriПрограмма
1   2   3   4   5   6   7   8   9
Bog'liq
mustaqil-ish

short int *p=new short[5]; long * q=new long [5];
p++; // p қиймати 2 ошади
q++; // q қиймати 4 га ошади
q+=3; // q қиймати 3*4=12 ошади
Кўрсаткичларнинг айирмаси деб, улар айирмасининг тур ўлча- мига бўлинишига айтилади. Кўрсаткичларни ўзаро қўшиш мумкин эмас.

Адресни олиш амали


Адресни олиш қуйидагича эълон қилинади:
<тур> & <ном>;
Бу ерда <тур> - адреси олинадиган қийматнинг тури, <ном>- адрес олувчи ўзгарувчи номи. Ўртадаги ‘&’ белгисига адресни олиш амали дейилади.
Бу кўринишда эълон қилинган ўзгарувчи шу турдаги ўзгарувчининг синоними деб қаралади. Адресни олиш амали орқали
битта ўзгарувчига ҳар хил ном билан мурожаат қилиш мумкин бўлади.
Мисол:
int kol;
int & pal=kol; // pal мурожаати, у kol
// ўзгарувчисининг альтернатив номи
const char & cr=’\n’; // cr - ўзгармасга мурожаат
Адресни олиш амалини ишлатишда қуйидаги қоидаларга риоя қилиш керак: адрес олувчи ўзгарувчи функция параметри сифатида ишлатилган ёки extern билан тавсифланган ёки синф майдонига мурожаат қилингандан ҳолатлардан ташқари барча ҳолатларда бошланғич қийматга эга бўлиши керак.
Адресни олиш амали асосан функцияларда адрес орқали узати- лувчи параметрлар сифатида ишлатилади.
Адрес олувчи ўзгарувчининг кўрсаткичдан фарқи шундаки, у алоҳида хотирани эгалламайди ва фақат ўз қиймати бўлган ўзгарувчининг бошқа номи сифатида ишлатилади.


Кўрсаткичлар ва адрес олувчи ўзгарувчилар функция параметри сифатида.
Функция прототипида ёки аниқланиш сарлавҳасида кўрсатилган параметрлар формал параметрлар дейилади, функция чақиришида кўрсатилган аргументларга фактик параметрлар дейилади.
Функция чақирилишида фактик параметрнинг тури мос ўриндаги формал параметр турига тўғри келмаса ёки шу турга келтиришнинг иложи бўлмаса компиляция хатоси рўй беради.
Фактик параметрларни функцияга икки хил усул билан узатиш мумкин: қиймати ёки адреси билан.
Функция чақирилишида аргумент қиймат билан узатилганда, аргумент ёки унинг ўрнидаги келган ифода қиймати ва бошқа аргу- ментларнинг нусхаси (қийматлари) стек хотирасига ёзилади. Функция фақат шу нусхалар билан амал қилади, керак бўлса бу нусхаларга ўзгартиришлар қилиниши мумкин, лекин бу ўзгаришлар аргумент- нинг ўзига таъсир қилмайди, чунки функция ўз ишини тугатиши билан нусхалар ўчирилади (стек тозаланади).
Агар параметр адрес билан узатилса, стекка адрес нусхаси ёзилади ва худди шу адрес бўйича қийматлар ўқилади (ёзилади). Функция ўз ишини тугатгандан кейин шу адрес бўйича қилинган
ўзгаришлар сақланиб қолинади ва бу қийматларни бошқа функциялар ишлатиши мумкин.
Аргумент қиймат билан узатилиши учун мос формал параметр сифатида ўзгарувчини тури ва номи ёзилади. Функция чақирилишида мос аргумент сифатида ўзгарувчининг номи ёки ифода бўлиши мумкин.
Фактик параметр адрес билан узатилганда унга мос келувчи формал параметрни икки хил усул билан ёзиш мумкин: кўрсаткич орқали ёки адресни олувчи параметрлар орқали. Кўрсаткич орқали ёзилганда формал параметр туридан кейин ‘*’ белгиси ёзилади, мос аргументда эса ўзгарувчининг адреси (& амал орқали) ёки массив номи, ёки функция номи бўлиши мумкин. Адресни олиш амали орқали параметр узатишда формал параметрда туридан кейин ‘&’ белгиси ёзилади ва функция чақирилишида мос аргумент сифатида ўзгарувчи номи келади.
Мисол:

Download 348.42 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




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