C++ միջավայրում ներկառուցված են հասցեի տիպ ունեցող տըվ-յալներ, որոնք նախատեսված են տվյալներին հասցեներով հղում կատա-րելու համար: Դրանք են ցուցանշիչային և հղումային տիպի տվյալները:
Ցուցանշիչը դա օբյեկտ է, որը պարունակում է այլ օբյեկտի հասցե: Այն հնարավորություն է ընձեռում անուղղակի գործողություններ կատարել այդ օբյեկտի հետ:
Յուրաքանչյուր ցուցանշիչ զուգակցվում է որևէ տվյալի տիպի հետ: Ցուցանշիչներից օգտվելու համար նրանք նախապես պետք է հայտարարել: Հայտարարման ժամանակ տրվում են ցուցանշիչին զուգակցվող փոփոխականի տիպը և ցուցանշիչի նույնարկողը: Ընդ որում, ցուցանշիչի յուրաքանչյուր անունից առաջ գրվում է աստղանիշ: Միևնույն հրահանգով կարելի է հայտարարել մեկ կամ մի քանի ցուցանշիչներ: Օրինակներª
string *p1;
double *dp;
int *ip1, *ip2;
Ցուցանշիչի ցուցադրման աստղանիշը կարող է անջատ գրվել անունից և նույնիսկ այն կարող է անմիջապես հաջորդել տիպի տրման առանցքային բառին: Հետևաբար, ներքևում բերված հրահանգները համարժեք են և ճիշտ:
string * p1;
string* p1;
Խորհուրդ է տրվում օգտագործել առաջին գրելաձևը:
Եթե միևնույն հրահանգով հայտարարվել են մի քանի ցուցանշիչներ, ապա ցուցանշիչների բոլոր նույնարկողներից առաջ աստղանիշերը պերք է գրված լինեն: Այսպես, եթե գրված էª
string *pg, ps;
ապա նրանցից միայն առաջինը կլինի ցուցանշիչ:
Ցուցանշիչին չի կարելի վերագրել հասցե չհանդիսացող մեծություն, ինչպես նաև ցուցանշիչին չի կարելի վերագրել այլ տիպ ունեցող օբյեկտի հասցե: Օրինակ, եթե կատարվել են հետևյալ հայտարարումները`
int i1;
double d1;
int *i2;
double *d2;
ապա ներքևում բերված վերագրման գործողությունները կլինեն սխալ
i1=i2;
d1=d2;
i2=d2;
Լինում են դեպքեր, երբ մեզ հետաքրքրում է հասցեի արժեքը, այլ ոչ թե նրանով ցուցադրվող օբյեկտը (ենթադրենք ուզում ենք այդ հասցեն համեմատել մեկ ուրիշ հասցեի հետ): Այդ դեպքերի համար նախատեսված է void հատուկ տիպի ցուցանշիչը, որը կարող է ցուցադրել ցանկացած տիպի տվյալ: Օրինակ, եթե լրացուցիչ կատարենք հետևյալ հայտարարումը`
void *ip;
ապա վերագրման այս գործողությունները կլինեն ճիշտ `
ip =i2;
ip =d2;
Ցուցանշիչին կարելի է գումարել կամ հանել ամբողջ արժեքներ: Ցուցանշիչին 1 ավելացնելը մեծացնում է նրա արժեքը համապատասխան տիպի օբյեկտի գրաված հիշողության չափով: Օրինակ, եթե double տիպը գրավում է 8 բայթ հիշողություն, ապա եթե double տիպի ցուցանշիչին ավելացնենք 3, նրա ցուցանշիչի արժեքը կմեծանա 24-ով:
Հղումային տիպը ծառայում է օբյեկտին լրացուցիչ անուն տա- լու համար:
Հղումային տիպը նշելու համար փոփոխականի անունից առաջ ցույց է տրվում հասցեի ցուցադրման գործողության նշանը (&): Հղումը անպայման պետք է ունենա սկզբնական արժեքներ: Օրինակª
int i1 = 1024;
int &i2 = i1; // ճիշտ է, i2–ը հղում է i1-ին
int &i3; // ճիշտ չէ, հղումը չունի սկզբնական արժեք
C++ ծրագրերում հղումները որպես ինքնուրույն օբյեկտներ քիչ են օգտագործում, սովորաբար նրանք օգտագործում են որպես ֆունկցիաների ֆորմալ պարամետրեր:
Комментариев нет:
Отправить комментарий