Junior
Պատմեք C/C++ լեզվում հղման և ցուցակագրողի տարբերությունների մասին։
sobes.tech AI
Պատասխան AI-ից
Հղումը կարելի է դիտարկել որպես առկա օբյեկտի մականուն; ցուցիչը պարունակում է օբյեկտի հիշողության հասցեն:
| Գծագիր | Հղում | Ցուցիչ |
|---|---|---|
| Արձանագրում | Պետք է հայտարարման ժամանակ սկզբնավորել: | Կարող է չլինել սկզբնավորած: |
| Փոխատնտեսում | Չի կարող փոխատնտեսվել հետո սկզբնավորելուց: | Կարող է ցույց տալ այլ օբյեկտի: |
| Նուլ արժեք | Չի կարող լինել null: | Կարող է լինել nullptr (C++11) կամ NULL (C/C++): |
| Արիտմետիկա | Չի աջակցում ուղղակի ցուցիչների թվաբանական: | Աջակցում է ցուցիչների թվաբանականը: |
| Օպերատորներ | Օգտագործվում է ուղղակի (. անդամների համար): |
Օգտագործում է * dereferencing համար, -> անդամների համար: |
| Մակերես | Չի ունի սեփական չափ, հղում է օբյեկտի չափին: | Ունի չափ, որը համապատասխանում է հասցեի չափին համակարգում (հաճախ 4 կամ 8 բայթ): |
| Հիշողության հատկացում | Չի պահանջում բացահայտ հատկացում/ազատում հիշողություն: | Կարող է պահանջել new/delete (C++-ում): |
| Օգտագործում | Սովորաբար որպես ֆունկցիայի պարամետրեր փոխանցելու համար: | Դինամիկ հիշողության հատկացում, ցածր մակարդակի մուտք: |
// Հղման օգտագործման օրինակ
int x = 10;
int& ref = x; // ref - հղում x-ի համար
ref = 20; // x այժմ 20
// Ցուցչի օգտագործման օրինակ
int y = 30;
int* ptr = &y; // ptr ցույց է տալիս y-ի հասցեին
*ptr = 40; // y այժմ 40
// Ցուցիչը կարող է լինել nullptr
int* null_ptr = nullptr;