Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
* Premenná: Premenná obsahuje * hodnotu * priamo. Predstavte si to ako na kontajner, ktorý ukladá údaje, napríklad číslo, znak alebo reťazec. Keď deklarujete premennú, pridelíte priestor v pamäti na uchovávanie týchto údajov.
* ukazovateľ: Ukazovateľ obsahuje *pamäťovú adresu *. Táto adresa poukazuje na miesto v pamäti, kde je uložená iná hodnota. Je to ako mať kúsok papiera s napísanou adresou - samotná adresa nie je dom (hodnota), ale povie vám, kde nájsť dom.
Tu je analógia:
Predstavte si mesto.
* Premenná: Dom v meste. Dom obsahuje niečo (nábytok, ľudia atď.). Adresa domu nie je súčasťou toho, čo je vo vnútri domu; Je to umiestnenie domu.
* ukazovateľ: Kúsok papiera s adresou domu napísaného. Samotný papier neobsahuje obsah domu, iba adresu, ktorá ho nájde.
v kóde (príklad C ++):
`` C ++
#include
int main () {
int x =10; // x je premenná, ktorá drží hodnotu 10
int* ptr; // PTR je ukazovateľ na celé číslo (ešte na nič neukazuje)
ptr =&x; // ptr teraz ukazuje na adresu pamäte x
std ::cout <<"Hodnota x:" <
návrat 0;
}
`` `
V tomto príklade:
* `X` je premenná, ktorá priamo ukladá celé číslo 10.
* `ptr` je premenná ukazovateľa. `&x` nám dáva adresu pamäte` x` a túto adresu priradíme k `ptr`. `*ptr` (operátor Dereference) pristupuje k hodnote na adrese pamäte uloženej v` ptr`.
Kľúčové rozdiely sú zhrnuté:
| Funkcia | Premenná | Ukazovateľ |
|----------------|--------------------------------------|------------------------------------------|
| drží | Hodnota | Adresa pamäte |
| Vyhlásenie | `int x;` (napr.) | `int* ptr;` (napr.) |
| Prístup | Priamy (napr. `X`) | Nepriame (pomocou operátora dereferencie `*`) |
| pamäť | Pamäť pridelená na ukladanie hodnoty Pamäť pridelená na uloženie adresy
Ukazovatele sú silné, ale môžu byť zložité správne používať. Sú nevyhnutné pre dynamické pridelenie pamäte, prepojené zoznamy, stromy a ďalšie pokročilé dátové štruktúry. Nesprávne použitie ukazovateľov však môže viesť k úniku pamäte a poruchám segmentácie. Mnoho jazykov na vyššej úrovni (ako Python, Java a C#) ponúka zbierku odpadu a skrývajú ukazovatele pred programátorom, aby sa zjednodušilo vývoj a zvýšili bezpečnosť.