Sobes.tech
Junior

Rääkige C/C++ keeles viite ja näitaja erinevustest.

sobes.tech AI

Vastus AI-lt

Viidet võib käsitleda kui olemasoleva objekti pseudonüümi; näidik sisaldab objekti mälu aadressi.

Omadus Viide Näidik
Initsialiseerimine Peab olema initsialiseeritud deklaratsiooni ajal. Võib olla initsialiseerimata.
Uuesti määramine Ei saa uuesti määrata pärast initsialiseerimist. Võib viidata teisele objektile.
Nullväärtus Ei saa olla null. Võib olla nullptr (C++11) või NULL (C/C++).
Massiivi indekseerimine Ei toeta otse näidiku aritmeetikat. Toetab näidiku aritmeetikat.
Operaatorid Kasutatakse otse (. liikmete jaoks). Kasutab * derefereerimiseks, -> liikmete jaoks.
Suurus Ei oma oma suurust, viitab objekti suurusele. Omab suurust, mis vastab aadressi suurusele süsteemis (tavaliselt 4 või 8 baiti).
Mälu eraldamine Ei nõua otsest mälu eraldamist/vabastamist. Võib nõuda new/delete (C++-s).
Kasutamine Sageli funktsioonide parameetritena viite kaudu edastamiseks. Düsainimese mälu eraldamiseks, madala taseme juurdepääsuks.
// Näide viite kasutamisest
int x = 10;
int& ref = x; // ref on x pseudonüüm
ref = 20;     // x on nüüd 20

// Näide näidiku kasutamisest
int y = 30;
int* ptr = &y; // ptr näitab y aadressile
*ptr = 40;    // y on nüüd 40

// Näidik võib olla nullptr
int* null_ptr = nullptr;