Inițializarea siruri de caractere în C

0

Problema

Am inceput sa invat C si tocmai a aflat ca siruri de caractere sunt tablouri de caractere. Am vrut să văd valorile sunt în corzi la fiecare moment dat, așa că am stabilit un punct de întrerupere în vscode, a urcat prin executarea, și s-a uitat la toate valorile.

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

    return 0;
}

Am văzut că înainte de inițializarea a[] matrice, există deja valori în memorie. screenshot of vscode while debugging.

Intrebarea mea este, ce sunt aceste valori? De ce sunt ele acolo? Ce reprezintă acestea?

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

Cel mai bun răspuns

1

Atunci când se definește o valoare, este nevoie de o parte de memorie care ar putea fi cuprinse alte numere. E, practic, aceste numere fiind afișate în fila remediere.

2021-11-24 14:32:02
0

Când ai declara matrice sau variabilă, este atribuit de memorie și memorie care pot conține unele gunoi valorile deja, așa că amprentele place acest fel

Gunoi valoare poate fi orice, limba standard nu specifică ce ar trebui să fie

2021-11-24 12:55:09
0

Memoria este de memorie, acesta poate fi dezactivat (aka umplut cu gunoi) sau ar putea fi inițializat cu date.

În cazul tău, când programul a sărit să-funcția principală-o stivă a fost creat pentru ea că ar conține variabile locale (local variabilă fiind matrice char ai declarat, de fapt un pointer la un loc în memorie). Înainte de a inițializat spus indicii a și b la punctul în șir, acestea ar putea fi cuprinse orice numerele vechi și atât de încercarea de a citi "string" la adresa aia ar da mai mult de gunoi aleatoare.

De exemplu, dacă ai scris int a = 5; în programul tău și am trecut prin, v-ar vedea în mod similar pe care o poate conține un număr aleator înainte de a atribui 5.

2021-11-24 07:01:48

Văd. Dar chestia asta nu pot să înțeleg este de ce nu am vedea aceleași valori de fiecare dată când am debug program?
jon doe
-1

Atunci când creați o nouă valoare cum ar fi numere întregi sau tablouri, sistemul va oferi aceste valori o adresă pentru a salva datele de pe acea adresa. Ar putea exista unele date privind adresa pentru alte aplicații și după închiderea aplicației, RAM nu le elimina, astfel încât înainte de inițializarea, veți vedea aceste date.

2021-11-24 07:08:54

În general-scop multiutilizator sisteme de operare, memorie de un proces nu conține date dintr-un alt proces, cu excepția datelor care este în mod deliberat comună. Sistemul de operare șterge memoria înainte de a redistribui la un alt proces, pentru scopuri de securitate.
Eric Postpischil

În alte limbi

Această pagină este în alte limbi

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