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

Dynamiczna tablica dwu wymiarowa c++

0 głosów
224 wizyt
pytanie zadane 10 listopada 2017 w C i C++ przez Jakub 0 Dyskutant (9,970 p.)

Hej, mam bardzo krótkie pytanie, ale może najpierw podam kod:

int **arr = new int*[3]; //tworzenie tablicy dwo wymiarowej
	arr[0] = new int[3];
	arr[1] = new int[3];
	arr[2] = new int[3];

	int c = 1;
	for (int i = 0; i < 3; i++) {
		for (int j = 0; j < 3; j++) { //tu jest jak najbarziej ok
			arr[i][j] = c;
			cout << arr[i][j];
			c++;
		}
		cout << endl;
	}

	cout << endl << endl;

	for (int i = 0; i < 3; i++) { //teraz chce zrobic tym sposobem i aplikacja sie rozwala 
		for (int j = 0; j < 3; j++) {
			cout << **arr;
			*arr++;
		}
		arr++;
		cout << endl;
	}

	delete arr[0];
	delete arr[1];
	delete arr[2];

	delete arr;

Myślę że kodu więcej tłumaczyć nie muszę bo raczej każdy (prócz mnie) rozum ie działanie dynamicznych tablic 2D :). W drugiej pętli zamiast po prostu dawać arr[i][j] to chcę to zrobić w 100% na wskaźnikach. Dziękuje bardzo za pomoc i pozdrawiam

*Co prawda już wiem czemu to jest wadliwe, nie zeruje *arr (nie wiem jak to zrobić). Taki kod też nie chodzi:

for (int i = 0; i < 3; i++) {
		cout << **arr;
		arr++;
	}

 

1 odpowiedź

+1 głos
odpowiedź 10 listopada 2017 przez Dexterim Dyskutant (8,470 p.)
wybrane 10 listopada 2017 przez Jakub 0
 
Najlepsza

Nie widzę sensu zabawy z takimi wskaźnikami. Zauważ, że na końcu nie zwalniasz tak naprawdę pamięci którą wcześniej zaalokowałej. Ponieważ przechodząc po pętli 

for (int i = 0; i < 3; i++) { //teraz chce zrobic tym sposobem i aplikacja sie rozwala 
        for (int j = 0; j < 3; j++) {
            cout << **arr;
            *arr++;
        }
        arr++;
        cout << endl;
    }

twoje arr nie wskazuje na początek tablicy a na koniec i idąc dalej *arr tak samo. Jeśli byś chciał się bawić to ewentualnie cos takiego *(*(arr+i)+j) (nie sprawdzałem ale wydaje mi się ze powinno działać. 

I tak ogolnie zabawę z dynamicznym alkowaniem lepiej zostawić bibliotece STL i skorzystać m.in. z std::vector

komentarz 10 listopada 2017 przez Jakub 0 Dyskutant (9,970 p.)

Racja, też mi się nie uśmiecha zabawa z czymś takim ale chyba muszę wiedzieć jak to zrobić /: . W ogóle nie nawidzę takiego stylo obsługi tablic i uczę się tego tylko dlatego żę wypada to umieć...

 

* ten zapis:  *(*(arr+i)+j)  już całkowicie mnie rozwala :O

 

Podobne pytania

0 głosów
2 odpowiedzi 85 wizyt
pytanie zadane 17 października 2015 w C i C++ przez Jonbi2 Dyskutant (8,260 p.)
0 głosów
1 odpowiedź 72 wizyt
pytanie zadane 19 listopada 2017 w C i C++ przez krystian1997 Początkujący (490 p.)
0 głosów
1 odpowiedź 301 wizyt
pytanie zadane 15 października 2017 w C i C++ przez StudzeKisiel Nowicjusz (150 p.)
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

53,002 zapytań

96,195 odpowiedzi

196,912 komentarzy

25,882 pasjonatów

Przeglądających: 63
Pasjonatów: 0 Gości: 63

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...