/ / Prečo musíme premennú deklarovať predtým, ako ju použijeme v niektorých jazykoch, ale nie v iných? [zatvorené] - java, python

Prečo musíme premennú vyhlásiť skôr, ako ju použijeme v niektorých jazykoch, ale nie v iných jazykoch? [zatvorené] - java, python

Ako je alokovaná pamäť pre deklaráciu premenných v Pythone verzus Java? Ako môže prekladaný jazyk vedieť, koľko pamäte je pre premennú potrebné, bez kroku kompilácie?

odpovede:

3 pre odpoveď č. 1

Pred použitím je potrebné premenným prideliť miesto v pamäti a potom inicializovať - ​​či už v Jáva, krajta, alebo dokonca logo.

Vyhlásenie to znamená vy oživiť túto premennú pomocou konkrétneho útržku kódu, s (napríklad pomocou Java) niečo podobného

int i;
Person p;

Sú deklarované, ale nie inicializované. Teraz majú priradené miesto v pamäti - ktoré sa v niektorých jazykoch môžu niekedy meniť, čo sa týka umiestnenia aj veľkosti. Ale bez ohľadu na to existuje teraz v pamäti nejaké fyzické umiestnenie, ktoré môže runtime prostredie dopytovať, aby sa načítala premenná (buď na ňu nepriamy ukazovateľ, alebo samotné umiestnenie).

Teraz, keď má prázdnu „schránku“, musí byť vyplnená, to znamená, že musí byť „inicializovaná“:

i = 3;
p = new Person();

Teraz je v krabici niečo konkrétne. Je pripravený na použitie. Pokus o použitie pred inicializáciou bude mať za následok (v Jave) a NullPointerException.

Niektoré jazyky vyžadujú, aby ste deklarovali premenné,aby sa na ňu výslovne pridelila pamäť (umiestnenie a / alebo veľkosť). Niektoré jazyky túto alokáciu pamäte vykonávajú za vás. Ako je uvedené v komentároch k vašej otázke aj k tejto odpovedi, existuje veľa variácií.