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

tablica statyczna, a dynamiczna

Object Storage Arubacloud
0 głosów
512 wizyt
pytanie zadane 4 października 2018 w C i C++ przez uther1455 Nowicjusz (140 p.)

Dzień dobry. Całkiem niedawno zacząłem naukę programowania. Prosiłbym aby Państwo mi powiedzieli, czy dobrze rozumiem różnicę między tablicą statyczną, a dynamiczną. No więc: tablica statyczna to taka której rozmiar jest ustalany na etapie kompilacji.

int main()
{
  int size;
  cin>>size;
  int tab[size];
  return 0;
}

Zmienna size ma losową wartość, powiedzmy 3800, więc kompilator rezerwuje pamięć dla tylu elementów. Nie mogę cin ustalić rozmiaru, ponieważ on został już ustalony, na etapie kompilacji. Zatem ten zapis jest skrajnie niepoprawny, choć kompilator nie zgłosi błędu. Natomiast:

int main()
{
	int size; 
	cin>>size;
	int*tab=new int[size];
	delete[]tab;
	return 0;
}

tak już mogę zrobić, bo dynamicznie to znaczy w trakcie działania programu. Zatem ten zapis jest poprawny. 

 

komentarz 4 października 2018 przez j23 Mędrzec (194,920 p.)

Nie mogę cin ustalić rozmiaru, ponieważ on został już ustalony,

Nie, rozmiar nie został ustalony (bo na podstawie czego miałby być?). Ten kod nie powinien się w ogóle skompilować (zapewne używasz g++, dlatego kompilacja przeszła). Żeby ten kod był poprawny, size musiałaby być const i mieć przypisaną jakąś wartość. Oczywiście linia z cin powinna zniknąć.

2 odpowiedzi

0 głosów
odpowiedź 4 października 2018 przez profesorek96 Szeryf (91,420 p.)
Tak jeśli masz tablice statyczną to defaultowo jej rozmiar powinien być stałą. Niektóre kompilatory przymykają na to oko. Dynamiczną tablice możesz tworzyć, zmieniać jej rozmiar, usuwać. Statyczna zostaje usunięta kiedy wychodzimy z funkcji lub program kończy swoje działanie.

Podobne pytania

0 głosów
3 odpowiedzi 159 wizyt
pytanie zadane 2 stycznia 2016 w C i C++ przez Avernis Nałogowiec (27,400 p.)
0 głosów
3 odpowiedzi 1,528 wizyt
pytanie zadane 17 października 2015 w C i C++ przez Ehlert Ekspert (212,670 p.)
0 głosów
2 odpowiedzi 775 wizyt
pytanie zadane 1 grudnia 2018 w C i C++ przez four Użytkownik (720 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...