Ўзгарувчилар каби ўзгармаслар ҳам маълумотларни сақлаш учун мўлжалланган хотира ячейкаларини ўзида ифодалайди. Ўзгарувчилардан фарқли равишда улар дастурни бажарилиши жараёнида қиймати ўзгармайди. Ўзгармас эълон қилиниши билан унга қиймат бериш лозим, кейинчалик бу қийматни ўзгартириб бўлмайди.
С++ тилида икки турдаги, литерал ва белгили ўзгармаслар аниқланган.
Литерал ўзгармаслар
Литералли ўзгармаслар тўғридан-тўғри дастурга киритилади. Масалан:
int myAge =39;
Бу ифодада MyAge int типидаги ўзгарувчи, 39 сони эса литерал ўзгармасдир.
Белгили ўзгармаслар
Белгили ўзгармас – бу номга эга бўлган ўзгармасдир. С++ тилида белгили ўзгармасни аниқлашнинг икки усули мавжуд:
# define директиваси ёрдамида ўзгармасни аниқлаш.
const калитли сўзи орқали ўзгармасни аниқлаш.
Анъанавий усул ҳисобланган #define директиваси орқали ўзгармасни аниқлашни қуйидаги мисолда кўришимиз мумкин.
#define StudentsPerClass 15
Бу ҳолда StudentsPerClass ўзгармас ҳеч қандай типга тегишли бўлмайди.
Препроцессор StudentsPerClass сўзига дуч келганида уни 15 литералига алмаштиради.
С++ тилида #define директивасидан ташқари ўзгармасни аниқлашнинг нисбатан қулайроқ бўлган янги усули ҳам мавжуд:
const unsigned short int StudentsPerClass=15
Бу мисолда ҳам белгили константа StudentsPerClass номи билан аниқланаяпти ва унга unsigned short int типи бериляпти. Бу усул бир қанча имкониятларга эга бўлиб у сизнинг дастурингизни кейинги ҳимоясини енгиллаштиради. Бу ўзгармасни олдингисидан энг муҳим афзаллиги унинг типга эгалигидир.
Белгили ўзгармасларни литерал ўзгармасларга нисбатан ишлатиш қулайроқдир. Чунки агарда бир хил номли литералли ўзгарувчини қийматини ўзгартирмоқчи бўлсангиз бутун дастур бўйича уни ўзгартиришга тўғри келади, белгили ўзгармасларни эса фақатгина бирининг қийматини ўзгартириш етарли.
Do'stlaringiz bilan baham: |