/** Page structure tweaks for layout editor wireframe */ body#layout #main, body#layout #sidebar { padding: 0; } -->

понедельник, 19 декабря 2011 г.

ՀԱՍՑԵԻ ՏԻՊ ՈՒՆԵՑՈՂ ՏՎՅԱԼՆԵՐ


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++ ծրագրերում հղումները որպես ինքնուրույն օբյեկտներ քիչ են օգտագործում, սովորաբար նրանք   օգտագործում են որպես ֆունկցիաների ֆորմալ պարամետրեր:

Комментариев нет:

Отправить комментарий