Sprawdzanie rozmiaru dynamicznej tablicy int
Ostatnio zmodyfikowano 2015-03-13 16:04
michal11 |
» 2015-03-11 20:00:22 Uzupełnię jeszcze post NopeDotAvi. Skoro rozmiar tablicy trzymany by był jako zmienna stała to jak niby tworzone by były tablice dynamiczne (z definicji, tworzone w trakcie działania programu)? cin >> n; int tab = new int[ n ];
|
|
Monika90 |
» 2015-03-11 20:10:35 const nie oznacza "znana w czasie kompilacji", można przecież tak const unsigned n = wczytaj_rozmiar(); const auto tablica = std::make_unique < int[] >( n );
i jak widać nie ma tam nigdzie new ani delete, oczywiście jeszcze lepiej jest użyć std::vector |
|
Brunon3 |
» 2015-03-11 20:39:53 const przecież oznacza "stała" (co raczej każdy wie). ;) @Monika90: Tak jbc, o std::vector już wspominałem. ;) -BD. |
|
maly |
» 2015-03-12 08:43:24 const przecież oznacza "stała" (co raczej każdy wie).;) |
Nie, const oznacza niezmienna, czyli można ją jakkolwiek zainicjować ale nie da się jej potem zmienić przez zwykłe przpisanie nowej wartości. |
|
Brunon3 |
» 2015-03-12 17:13:47 Czyli niezmienna != stała ?
;)
-BD. |
|
kynol |
» 2015-03-12 23:44:47 Wtf maly? Const to stala a nie jakas niezmienna jak to ty napisales, Brunon, wedlug jego teorii const == stala.
Mozna tez uzywac typow wyliczeniowych enum do deklarowania stalych zmiennych.
Monika, jak to? przeciez stala musi byc znana w trakcie kompilacji :P jesli np zadeklaruje sie stala zmienna bez wartosci to bedzie ona miala wartosc nieokreslona ktorej nie da sie zmienic normalnie |
|
Lora |
» 2015-03-13 01:29:42 @kynol Monika ma rację. Chodzi o to, żeby stałą const ustawiać w momencie deklaracji, ale może to się dziać już w trakcie działania programu. int wczytaj_rozmiar() { int l; cin >> l; return l; }
int main( void ) { const int n = wczytaj_rozmiar(); cout << n << endl; }
Takie coś zadziała. Oczywiście stałej n nie da się już później zmienić. |
|
maly |
» 2015-03-13 07:00:05 Wtf maly? Const to stala a nie jakas niezmienna jak to ty napisales |
const int i = 12; Zmienna 'i' typu int z modyfikatorem const informującym kompilator o niezmienności zmiennej w czasie kompilacji , '12' to stała. W tym wypadku zmienną 'i' rzeczywiście można traktować jako stałą ale... Takie coś zadziała. Oczywiście stałej n nie da się już później zmienić. |
Nie wiem czy to jest zgodne ze standardem C++ ale każdy używany przezemnie kompilator zmieni waszą 'stałą'. int wczytaj_rozmiar() { int l; cin >> l; return l; }
int main( void ) { const int n = wczytaj_rozmiar(); * const_cast < int *>( & n ) = 666; cout << n << endl; } Najlepiej by było aby żeby ekspert jakowyś wypowiedział się na ten temat, bo wypowiedzi niewiele wiedzących(w tym i Ja) mogą innych wprowadzić w błąd. |
|
1 2 « 3 » 4 5 |