Inicializácia reťazce v C

0

Otázka

Ja som sa začala učiť C a práve sa dozvedel, že struny sú len polia znakov. Chcel som vidieť hodnoty sú v reťazce v každom danom momente tak som nastaviť bod prerušenia v vscode, kráčali cez realizáciu, a pozrel sa na všetkých hodnôt.

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

    return 0;
}

Videl som, že pred inicializácii a[] pole, tam sú už hodnoty v pamäti. screenshot of vscode while debugging.

Moja otázka je, aké sú tie hodnoty? Prečo sú tu? Čo vlastne predstavujú?

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

Najlepšiu odpoveď

1

Pri stanovení hodnoty, trvá časť pamäte, ktoré by obsahovali iné čísla. Je to v podstate tie čísla sú uvedené vo vašom debug tab.

2021-11-24 14:32:02
0

Pri prvom deklarovať pole alebo premenná, to je pridelené pamäte a pamäti, že môže obsahovať nejaké odpadky hodnoty už, tak ho vypíše, ako je tento spôsob

Odpadky hodnota môže byť čokoľvek, jazyk, norma neuvádza, aké by to malo byť

2021-11-24 12:55:09
0

Pamäť je pamäť, môže to byť uninitialized (aka naplnená odpadky), alebo by to mohlo byť inicializovaná údajov.

Vo vašom prípade, keď váš program skočil na svoju hlavnú funkciu zásobníka bola vytvorená pre to, že by obsahovať vaše lokálne premenné (vašej lokálnej premennej je char pole, ktorú ste deklarovali, v podstate smerník na nejaké miesto v pamäti). Pred inicializovaný povedal pripomienky a a b na miesto, na svoj reťazec, mohli by obsahovali akékoľvek staré čísla a tak sa snaží čítať "string" na túto adresu by vám viac náhodné odpadky.

Napríklad, ak si to napísal int a = 5; v programe a podporili ich prostredníctvom by ste podobne vidieť, že môže obsahovať nejaké náhodné číslo, než sa priradiť to 5.

2021-11-24 07:01:48

Vidím. Ale vec, že ja nedokážem pochopiť, je, prečo to vidím rovnaké hodnoty vždy, keď som ladenie programu?
jon doe
-1

Keď vytvoríte novú hodnotu ako celé čísla alebo polia, systém bude dávať tieto hodnoty adresu pre ukladanie údajov na tejto adrese. Tu by mohol byť niektoré údaje, na ktoré sa zameriavajú na iné aplikácie a po skončení aplikácie, RAM nebude ich odstránenie, tak pred inicializácia, uvidíte týchto údajov.

2021-11-24 07:08:54

V všeobecné účely, vrátane merania operačné systémy, pamäť procesu nikdy obsahuje údaje z iného procesu, s výnimkou údajov, ktoré je zámerne zdieľané. Operačný systém vymaže pamäť pred zmene jeho priradenia na iný proces, na bezpečnostné účely.
Eric Postpischil

V iných jazykoch

Táto stránka je v iných jazykoch

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