Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++]Tablice dwuwymiarowe - dynamiczna alokacja pamięci

Ostatnio zmodyfikowano 2015-08-29 12:57
Autor Wiadomość
Frish
Temat założony przez niniejszego użytkownika
[C++]Tablice dwuwymiarowe - dynamiczna alokacja pamięci
» 2015-08-28 12:56:19
Witam

w taki sposób zaalokowałem miejsce w pamięci na tablicę 3x5.

C/C++
#include <iostream>

int main()
{
    int( * tab_w )[ 5 ];
    tab_w = new int[ 3 ][ 5 ];
   
    //.....tutaj potrzebuję wpisać wartości do tej tablicy poprzez pętlę for.
}

...niestety próbowałem ale nie wychodzi mi wpisanie do tablicy wartości. Proszę o wytłumaczenie w jaki sposób to sprawnie zrobić poprzez pętlę for(chciałem uzyskać to poruszając się po tablicy wskaźnikiem)
P-136980
darko202
» 2015-08-28 13:13:30
P-136981
Frish
Temat założony przez niniejszego użytkownika
» 2015-08-28 13:20:45
Wiesz po to pisze na forum, żeby to było użyteczne dla wszystkich nie tylko dla mnie i myślałem że ktoś potrafi to wytłumaczyć. Podałeś mi odnośniki ale właśnie tam nie do końca jest to co chciałem uzyskać bo z klasami jeszcze otrzaskany nie jestem dobrze a później jest dostęp tablicowy wytłumaczony. Potrzebuje pomocy więc pytam ponieważ nie potrafię tego zrobić. Chciałem za pomocą wskaźnika poruszać się po tej tablicy ale nie umiem tego zapisać(dostęp przez zapis tablicowy potrafię uzyskać ale potrzebuje się dowiedzieć jak wskaźnikiem to zrobić).
P-136982
darko202
» 2015-08-28 13:43:13
nie rozumiem krytyki :(

pod pierwszym linkiem jest np.

C/C++
int rx, ry, ** tab;
int main()
{
    cout << "Podaj ilosc wierszy:";
    cin >> ry;
    tab = new int *[ ry ];
    for( int i = 0; i < ry; i++ ) {
        cout << "Podaj ilosc kolumn:";
        cin >> rx;
        tab[ i ] = new int[ rx ];
        for( int x = 0; x < rx; x++ ) {
            tab[ i ][ x ] = 1;
            cout << tab[ i ][ x ] << " ";
        }
        cout << endl;
    }
   
    for( int i = 0; i < ry; i++ )
         delete[] tab[ i ];
   
    delete[] tab;
   
    system( "PAUSE" );
    return EXIT_SUCCESS;
}

trochę cierpliwości w czytaniu :)
P-136984
Frish
Temat założony przez niniejszego użytkownika
» 2015-08-28 13:48:33
Przepraszam jeżeli tak to odebrałeś, nie krytykowałem. Pod linkiem faktycznie jest taki kod, przepraszam moja nieuwaga. Mam pytanie w związku ze sposobem w który ja zaalokowałem pamięć na tablice, czy tutaj można również poruszać się po tej tablicy przez wskaźnik?
P-136985
darko202
» 2015-08-28 14:01:16
pewnie wiesz, że "tablica sama w sobie jest wskaźnikiem na pierwszy element tablicy"
nie zmienia się to dla tablic wielowymiarowych
można takim wskaźnikiem przechodzić przez kolejne elementy

poruszałeś już chyba ten problem w
http://cpp0x.pl/forum/temat/​?id=20665
P-136989
Frish
Temat założony przez niniejszego użytkownika
» 2015-08-28 14:10:42
Tak masz rację poruszyłem tam ten problem i wszystko mi się tam rozjaśniło, ale tutaj przy alokacji miejsca gubię się i nie wiem jak wpisać do tablicy elementy. Problem polega na tym, że próbowałem w podobny sposób i gdzieś popełniam błąd. Widocznie czegoś ze wskaźnikiem do wskaźnika jeszcze nie zrozumiałem.

dziękuję za pomoc:)
P-136990
darko202
» 2015-08-28 14:57:38
>>Problem polega na tym, że próbowałem w podobny sposób i gdzieś popełniam błąd.
int( * tab_w )[ 5 ];  // deklarujesz tablicę 5 wskaźników

tab_w[3] = ?  np. 0x0477845EF - adres

tab_w = new int[ 3 ][ 5 ];  //rezerwacja pamięci na tablicę 3x5

sprawdź :
 
tab_w[3][1] = ?
*tab_w[3][1] = ?
P-136996
« 1 » 2
  Strona 1 z 2 Następna strona