Skocz do zawartości

Zablokowane Deklaracja tablicy na podstawie zmiennej


Rudy

Rekomendowane odpowiedzi

No właśnie, jak zadeklarować stworzenie tablicy, w której o ilości tych członów decyduje zmienna?

 

czyli:

 

unsigned short value1 = 5;

unsigned short value2 = 3;

...

int array [value1][value2];

 

przy czym między kropkami te zmienne mogą się zmienić.

Odnośnik do komentarza
Udostępnij na innych stronach

A dynamiczna tablica może być dwuwymiarowa? Bo wyskakuje błąd, wnioskuję, że chodzi właśnie o to, że jest dwuwymiarowa, nie zwykła:

 

kod:

unsigned short value1 = 5;
unsigned short value2 = 3;
...
int *array = new int [value1][value2];
...
delete[] array;

error: cannot convert `int (*)[10]' to `int*' in initialization

Odnośnik do komentarza
Udostępnij na innych stronach

Tablicę 2D alokujesz w taki sposób:

  int columnCount = 10;
  int rowCount = 100;

  int** array = new int*[columnCount];
  
  for ( int i = 0; i < columnCount; ++i )
    array[i] = new int[rowCount];

  array[1][23] = 123;
  array[2][34] = 234;

  cout << array[1][23] << endl
       << array[2][34] << endl;

  for ( int i = 0; i < columnCount; ++i )
    delete [] array[i];

  delete [] array;

taka tablica tablic :P

Odnośnik do komentarza
Udostępnij na innych stronach

Ymmm... sprytnie :)

Dziex wszystkim za pomoc i wyjaśnienie :thumbsup:

 

 

 

To chyba jeszcze nie wszystko...

 

Najpierw przedstawię wszystko, co dzieje się z tą tablicą:

Tu był kodzik, ale jest już przestarzały :)

Mimo iż przed WM_DESTROY musi być stworzone okno, kompilator tego nie przepuści. I jak tu coś takiego zrobić? Najlepiej byłoby jakoś zadeklarować powstawanie tablicy jako globalnej, przed wszystkimi funkcjami. Ale czy tak można? Tzn. czy można zadeklarować tablicę globalną (dynamiczną), i dopiero później przypisać jej, ile ma mieć miejsc?

 

Ok, poradziłem sobie. Na początku deklaruję tylko wskaźnik, potem (po rozpoczęciu main) przypisuje jej tablice, na końcu main ją zwalniam.

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...