Pokud jde o to, jak je proměnná uložena v paměti RAM, jaký je rozdíl mezi „int? X = 0“ a „int? X = null“?


Odpověď 1:

Nulovatelný typ bude mít nějaký druh zvláštního pole, které udává, zda je hodnota platná. Vypadá to, že váš příklad je v C #. V tomto případě, int? je zkratka pro System.Nullable . System.Nullable je obecný typ, který obtéká T s extra bool polem HasValue. Toto zvláštní pole bool bude uloženo v paměti spolu s úložištěm pro T. Přidaná syntaxe v C # pro typy s nulovatelnou hodnotou skryje základní akce, které pole používají.

Koncepčně vypadá kód takto:

int? x = 0; // překládá se do
x.Value = 0;
x.HasValue = true;

int? x = null; // přeložit do
x.HasValue = false;

V jakékoli situaci, kdy jsou všechny bitové vzory typu hodnoty platné, např. Celá čísla, bude muset jazyk přidat nějaký druh zvláštního pole nebo indikátoru, aby ukázal, zda existuje platná hodnota nebo zda by se s proměnnou mělo zacházet jako s null. Teoreticky, pokud kompilátor věděl, že některé bitové vzory nebyly platné hodnoty, mohl by použít jeden z neplatných vzorů k označení nulové hodnoty a nepoužít žádné další úložiště. V praxi to však bude pravděpodobně nemožné, takže vždy uvidíte, jak se používá nějaký zvláštní kus paměti.

Nulovatelná struktura (systém)


Odpověď 2:

Je zcela závislé na tom, jak je programovací jazyk implementován. Stejný jazyk lze implementovat mnoha různými způsoby v závislosti na hardwaru a konkrétních kompilátorech.

Nicméně, v mnoha jazycích, proměnná identifikuje konkrétní paměťové místo, kde jsou uložena skutečná data. pokud má proměnná hodnotu, dokonce i nulu, bude místo nastaveno. Pokud je null, samotné umístění bude nastaveno na bezvýznamnou hodnotu, nulu nebo jinak.


Odpověď 3:

Je zcela závislé na tom, jak je programovací jazyk implementován. Stejný jazyk lze implementovat mnoha různými způsoby v závislosti na hardwaru a konkrétních kompilátorech.

Nicméně, v mnoha jazycích, proměnná identifikuje konkrétní paměťové místo, kde jsou uložena skutečná data. pokud má proměnná hodnotu, dokonce i nulu, bude místo nastaveno. Pokud je null, samotné umístění bude nastaveno na bezvýznamnou hodnotu, nulu nebo jinak.


Odpověď 4:

Je zcela závislé na tom, jak je programovací jazyk implementován. Stejný jazyk lze implementovat mnoha různými způsoby v závislosti na hardwaru a konkrétních kompilátorech.

Nicméně, v mnoha jazycích, proměnná identifikuje konkrétní paměťové místo, kde jsou uložena skutečná data. pokud má proměnná hodnotu, dokonce i nulu, bude místo nastaveno. Pokud je null, samotné umístění bude nastaveno na bezvýznamnou hodnotu, nulu nebo jinak.


Odpověď 5:

Je zcela závislé na tom, jak je programovací jazyk implementován. Stejný jazyk lze implementovat mnoha různými způsoby v závislosti na hardwaru a konkrétních kompilátorech.

Nicméně, v mnoha jazycích, proměnná identifikuje konkrétní paměťové místo, kde jsou uložena skutečná data. pokud má proměnná hodnotu, dokonce i nulu, bude místo nastaveno. Pokud je null, samotné umístění bude nastaveno na bezvýznamnou hodnotu, nulu nebo jinak.