Inicjowanie wierszy w C

0

Pytanie

Zacząłem uczyć się C i właśnie dowiedziałem się, że wiersze to po prostu tablice znaków. Chciałem zobaczyć wartości w wierszach w każdej chwili, więc zainstalowałem punkt przerwania w vscode, przeszedł przez wykonanie i przejrzałem wszystkie wartości.

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

    return 0;
}

Widziałem to przed inicjacją a[] tablica w pamięci już nie ma wartości. screenshot of vscode while debugging.

Moje pytanie brzmi, jakie są te wartości? Dlaczego oni tam są? Co oni sobą reprezentują?

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

Najlepsza odpowiedź

1

Przy ustalaniu wartości wymagane jest część pamięci, która mogłaby zawierać inne liczby. W zasadzie to te liczby, które są wyświetlane na karcie "debugowanie".

2021-11-24 14:32:02
0

Kiedy pierwszy raz zadeklarować tablicę lub zmienną, jej przypisywana jest pamięć, a pamięć ta może zawierać pewne wartości śmieci, więc jest drukowany w następujący sposób

Wartość śmieci może być dowolny, językowy standard nie określa, jak powinno być

2021-11-24 12:55:09
0

Pamięć jest pamięć, może być неинициализирована (ona jest pełna śmieci) lub może być inicjalizowana danymi.

W twoim przypadku, gdy twój program przeszła do swojej podstawowej funkcji, dla niej został stworzony stos, który będzie zawierać swoje zmienne lokalne (lokalna zmienna-to ogłoszony przez ciebie tablica znaków, w większości indeks na jakieś miejsce w pamięci). Do tego, jak инициализировали następujące wskaźniki a i b aby podkreślić swój wiersz, mogły zawierać jakieś stare numery, a więc próba odczytania "ciąg" na tej stronie daje więcej przypadkowe śmieci.

Na przykład, jeśli napisałeś int a = 5; w twoim programie i po przejściu przez nią, zobaczysz również, że a może zawierać pewną liczbę losową, zanim przypisać mu 5.

2021-11-24 07:01:48

Rozumiem. Ale to, co ja myślę, nie mogę zrozumieć dlaczego widzę te same wartości za każdym razem, gdy отлаживаю program?
jon doe
-1

Gdy tworzysz nową wartość, na przykład liczby całkowite, lub tablice, system daje tym wartościom adres do zapisywania swoich danych na ten adres. Na tym adresie mogą być pewne dane do innych aplikacji, i po zamknięciu tej aplikacji pamięć nie usunie ich, dlatego przed inicjacją zobaczysz te dane.

2021-11-24 07:08:54

W multiplayer systemów operacyjnych ogólnego przeznaczenia pamięć jednego procesu nie zawiera danych z innego procesu, za wyjątkiem danych, które celowo są używane wspólnie. System operacyjny czyści pamięć przed ponownym nadawaniem jej do innego procesu w celu zapewnienia bezpieczeństwa.
Eric Postpischil

W innych językach

Ta strona jest w innych językach

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