Sobes.tech
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;