• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Deklarowanie tablicy

VPS Starter Arubacloud
0 głosów
121 wizyt
pytanie zadane 26 lutego 2017 w C i C++ przez ChiriChiri Obywatel (1,260 p.)
Zadeklarowałam liczbę n, a potem tablicę o rozmiarze n, dopiero wtedy podałam wartość n. Dlaczego program nie zadziałał? ( Zadziałał jak zmieniłam kolejność na deklaracja n, podanie n, deklaracja tablicy) Ale ciekawi mnie co dzieje się w komputerze gdy próbuję napisać to co napisałam za pierwszym razem?

P.S. Nie wiem, czy pisać na to kolejne pytanie, więc pytam się tutaj, w każdym razie chodzi o to czy znacie jakieś strony w internecie, na których jest właśnie opisane jak działa komputer tak dokładnie, jego budowa itp. itd.

2 odpowiedzi

+1 głos
odpowiedź 26 lutego 2017 przez Aisekai Nałogowiec (42,190 p.)
Bo kompilator kompiluje linijka po linijce. A w szczególności, z tworzeniem tablic. Tworzysz tablicę, n elememtowa jednakże podczas tworzenia tablicy nie wiadomo czym jest to n. Później, nawet jak zmienisz to n, to rozmiar tablicy się nie zmieni. Przykład:

n =2: deklarujesz tablice n elementowa czyli 2. Jeżeli byś teraz zmieniła na n=3 to tablica dalej będzie 2 elementowa.
+1 głos
odpowiedź 26 lutego 2017 przez sebastian970 Użytkownik (710 p.)
Witam koleżanko ;D

Otóż twój program jak i cały system wykonuje operacje na komendach które zostały zaprogramowane (nie wiem czy użyłem dobrych słów, ale to mnie ważne). Ty pisząc program piszesz komendy które linijka po linijce zostają tłumaczone przez kompilator czyli ten program w którym piszesz na język komputera czyli binarny (zera i jedynki). Zero oznacza brak impulsu a jedynka impuls i tak komputer rozumie sobie świat.

Co do twojego błędu z tablicą to przyczyna jest bardzo prosta - każda zmienna rezerwuje sobie pamięć w systemie żeby system sobie bezpiecznie działał(obrona systemu lub uniknięcie przed zużyciem całej pamięci). Np. int zabiera 16 bitów z pamięci systemowej. Minusem tablic jest to, że muszą mieć zdeklarowaną ilość pól(ilość pamięci którą mogą przechować) na początku działania programu i ta ilość musi być stała czyli nie może być zmieniana podczas działania programu bo to powoduje reakcje obronną systemu przeciw zużyciu pamięci systemowej. Idąc tym tokiem rozumowania i tym, że komputer czyta program linijkę po linijce to kiedy najpierw przeczyta o deklaracji tablicy a dopiero potem ma informacje o ilości pól to nie może zdeklarować tej tablicy bo nie wie jak wielka ona jest gdyż w momencie czytania deklaracji zmienna "n" nie istnieje jeszcze.

W przyszłości będziesz mogła sobie korzystać z kontenerów pamięci które potrafią zmieniać rozmiar podczas działania programu - std::list lub std::vector. Ale narazie zajmij się rozumieniem zwykłych tablic :D

 

Mam nadzieje, że niczego nie pomyliłem i wytłumaczyłem dobrze.

Podobne pytania

0 głosów
1 odpowiedź 402 wizyt
pytanie zadane 25 stycznia 2021 w C i C++ przez KonradKalbarczyk Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 285 wizyt
pytanie zadane 30 stycznia 2020 w C i C++ przez Fakserik Nowicjusz (120 p.)
+1 głos
2 odpowiedzi 334 wizyt

93,028 zapytań

141,991 odpowiedzi

321,294 komentarzy

62,375 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...