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

Tablice dynamiczne c++

Mały hosting, OGROMNE możliwości
+1 głos
708 wizyt
pytanie zadane 23 stycznia 2022 w C i C++ przez Doge Gaduła (3,420 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 2022 przez Wiciorny Ekspert (283,260 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 2022 przez Oscar Nałogowiec (29,360 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 809 wizyt
pytanie zadane 11 września 2020 w C i C++ przez Kytrap Początkujący (390 p.)
0 głosów
1 odpowiedź 345 wizyt
0 głosów
2 odpowiedzi 2,889 wizyt
pytanie zadane 12 marca 2020 w C i C++ przez Szymczak_7 Obywatel (1,860 p.)

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,262 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...