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

Tablice dynamiczne c++

+1 głos
119 wizyt
pytanie zadane 23 stycznia w C i C++ przez Doge Bywalec (2,300 p.)
Witam, do czego służą tablice dynamiczne w c++? Czym różnią się od statycznych?

1 odpowiedź

0 głosów
odpowiedź 23 stycznia przez Wiciorny Ekspert (221,970 p.)

Rozróżnia się dwa typy tablicstatyczne - czyli takie, których rozmiaru podczas działania programu nie da się zmienić; 

dynamiczne - czyli takie, którym pamięć jest przypisywana w trakcie działania programu.

Statyczne tablice :
 

int array1[]={10,20,30,40,50}; // deklaracja z tablicy statycznej z jednoczesnym ustawieniem jej wartości
int array2[5]; // deklaracja tablicy statycznej 5 elementowej
for(int i = 0; i < 5; i ++){ // w pętli od 0 do 4 
    array2[i] = i * 10 + 10; // ustawiam kolejne wartości tablicy statycznej array2 względem indeksu i
}

dynamiczne tablice : 
 

cout<<"Podaj rozmiar tablicy:";
int arraySize = 0;
cin>>arraySize; // wczytywanie rozmiaru tablicy
int *array = 0; // wskaźnik tablicy dynamicznej
if(arraySize > 0 && arraySize < 100){
    array = new int[arraySize]; // deklarowanie pamięci
    for(int i = 0; i < arraySize; i++){ // w pętli
        array[i] = i + 1; // wpisuję kolejne numery do tablicy
        cour<<"array["<<i<<"]="<<array[i]<<"n"; // wypisywanie tablicy na ekranie
    }
    delete[] array; // zwalnianie przypisanej pamięci
    array = 0; // dzięki temu przypisaniu będzie można stwierdzić, że pamięć tej zmiennej została zwolniona
}

 

Lokalne tablice są tworzone na stosie i mają Automatyczny czas przechowywania -- nie trzeba ręcznie zarządzać pamięcią, ale są one niszczone, gdy kończy się funkcja, w której się znajdują. Muszą mieć stały rozmiar:

int foo[10];

Tablice utworzone za pomocą operator new[] mają dynamiczny czas przechowywania i są przechowywane na stercie (technicznie "wolny magazyn"). Mogą mieć dowolny rozmiar, ale musisz je przydzielić i uwolnić samodzielnie, ponieważ nie są częścią ramki stosu:]}

komentarz 23 stycznia przez Oscar Nałogowiec (25,670 p.)
Dodałbym, że zwykle wielkość stosu jest ograniczona i należy unikać tworzenia dużych tablic lokalnych. Ile to jest dużo, to zależy od środowiska. Ograniczenie oczywiście dotyczy ogólnie zmiennych lokalnych, nie tylko tablic, ale tablice najłatwiej uczynić "wielkimi".

Podobne pytania

0 głosów
2 odpowiedzi 171 wizyt
pytanie zadane 11 września 2020 w C i C++ przez Kytrap Początkujący (340 p.)
0 głosów
1 odpowiedź 95 wizyt
0 głosów
2 odpowiedzi 786 wizyt
pytanie zadane 12 marca 2020 w C i C++ przez Szymczak_7 Obywatel (1,860 p.)

88,331 zapytań

136,926 odpowiedzi

305,593 komentarzy

58,601 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...