Inicializace řetězce v C

0

Otázka

Začal jsem se učit C a právě se dozvěděl, že struny jsou jen pole znaků. Chtěl jsem vidět, hodnoty jsou ve smyčce v každém okamžiku tak jsem nastavit zarážku v vscode, prošli provedení, a podíval se na všechny hodnoty.

int main()
{
    char a[4] = "foo";
    char b[4] = "bar";

    return 0;
}

Viděl jsem, že před inicializaci a[] pole, tam jsou již hodnoty v paměti. screenshot of vscode while debugging.

Moje otázka je, co jsou tyto hodnoty? Proč tam jsou? Co představují?

c
2021-11-24 06:29:21
4

Nejlepší odpověď

1

Při definování hodnoty, to trvá části paměti, která by mohla obsahovat další čísla. Je to v podstatě ty čísla jsou uvedeny v ladění tab.

2021-11-24 14:32:02
0

Když si nejprve deklarovat pole nebo proměnnou, je přidělena paměť a to paměť může obsahovat některé hodnoty odpadky už, tak to vytiskne jako tímto způsobem

Odpadky hodnota může být cokoliv, jazyk, norma nespecifikuje, co by mělo být

2021-11-24 12:55:09
0

Paměť je paměť, to by mohlo být neinicializované (aka plné odpadků) nebo to může být inicializován s daty.

Ve vašem případě, když váš program skočil na své hlavní funkce, zásobník byl vytvořen pro to, že by obsahovat vaše lokálních proměnných (lokální proměnné je char pole prohlásil jste, v podstatě ukazatel na nějaké místo v paměti). Před inicializován řekl ukazatelů a a b poukázat na tvůj řetězec, že by obsahovaly nějaké staré čísla a tak se snaží číst "string" na tuto adresu by vám více náhodné smetí.

Například, pokud jste napsal int a = 5; v programu a prošli, by podobně vidět, že by mohly obsahovat nějaké náhodné číslo, před přiřadit je 5.

2021-11-24 07:01:48

Vidím. Ale co nemůžu pochopit je, proč vidím stejné hodnoty pokaždé, když jsem ladění programu?
jon doe
-1

Když vytvoříte novou hodnotu jako celá čísla nebo pole, systém vám poskytne tyto hodnoty adresu pro ukládání svých dat na tuto adresu. Tam by mohlo být některé údaje o adrese pro jiné aplikace a po ukončení aplikace, RAM nebude-li je odstranit, takže před inicializací, uvidíte tyto údaje.

2021-11-24 07:08:54

V univerzální víceuživatelský operační systémy, paměti jeden proces nikdy obsahuje data z jiného procesu, s výjimkou údajů, které je záměrně sdílené. Operační systém vymaže paměť, než přerozdělení na jiný proces, pro bezpečnostní účely.
Eric Postpischil

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................