Zmienne zwykłe i const w inicjalizowaniu tablic

Zmienne zwykłe i const w inicjalizowaniu tablic

Wątek przeniesiony 2014-12-04 12:14 z C/C++ przez ŁF.

  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 62
0

Witajcie

Mam z kumplem pewien problem:
On używa Eclipse i kompilatora g++ i poniższy kod mu działa:

Kopiuj
int main()
{
int size = 3;
int tab[size];

return 0;
}

..natomiast poniższy kod nie działa:

Kopiuj
int size = 3;
int tab[size];

int main()
{

return 0;
}

Co więcej, ja używam Microsoft Visual Studio 2013 i powyższe przykłady u mnie nie przechodzą.

Do każdego przypadku muszę dopisać modyfikator 'const', żeby zadziałało:

Kopiuj
const int size = 3;
}

..W obu przypadkach - i w funkcji main i poza nią.

Czy mógłby ktoś wytłumaczyć krótko jak powinno być i dlaczego?

Dzięki ;)

poprawienie tagów wątku - @furious programming

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1
Kopiuj
int size = 3;
int tab[size]; 

takie cos w c++ jest zakazane (program sie nie skompiluje) po angielsku nazywa sie to Variable Length Array. mozna powiedziec ze jest to "inicjalizacja w locie".

Kompilator nie ma pewnosci ze ta zmienna nie zmieni sie miedzyczasie wiec wyrzuca blad (i bardzo dobrze). Jezeli zmienna jest const to kompilator ma zagwarantowane ze ta zmienna sie nie zmieni i mozna zainicjalizowac tak tablice

w C taka inicjalizacja jest to mozliwe i nie wyrzuca zadnych bledow (taki maly paradoks)

Ale, dosc o tej tablicy. Wazniejsze jest cos innego. Zapewne NIGDY nie bedziesz uzywac tablicy, zawsze bedziesz uzywac jakis kontererow (np vector) wiec zapoznaj sie z tym a nie walcz z tablicami ;)
http://www.parashift.com/c++-faq/arrays-are-evil.html

gośćabc
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 500
0

C++ doesn't allow non-constant values for the size of an array. That's just the way it was designed.
odpowiedź z, zacznijcie używać googla do tak prostych pytań chłopaki

http://stackoverflow.com/questions/9219712/c-array-expresssion-must-have-a-constant-value

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.