Tablica dwuwymiarowa na wskaźnikach

Tablica dwuwymiarowa na wskaźnikach
K3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

Cześć, normalnie tablicę dwuwymiarową zapisuję się np. tab[i][j], jak zapisać tablicę dwuwymiarową posługujac się arytmetyką wskaznikow? Wiem jak zrobić tablicę jednowymiarową na wskanikach w pętli, (tab + i)

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5053
2

Szukałeś w internecie? Chyba na ten temat wszystko zostało napisane :)
https://duckduckgo.com/?q=c+two+dimensional+array+pointer&t=ffab&ia=web

Trisolaris
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

Tablica dwuwymiarowa:

Kopiuj
n_cols = 4
n_rows = 3
tab[n_rows][n_cols]
[0,0][0,1][0,2][0,3]
[1,0][1,1][1,2][1,3]
[2,0][2,1][2,2][2,3]

W pamięci jest ciągłym fragmentem pamięci, który rozkłada się tak:

Kopiuj
[0,0][0,1][0,2][0,3] [1,0][1,1][1,2][1,3] [2,0][2,1][2,2][2,3]

Więc jeśli chcesz się przemieszczać po tej tablicy wskaźnikiem to:
Idx elementu w płaskiej strukturze = col + row * n_cols

Kopiuj
tab[1,2]: 2 + 1 * 4 = 6
tab[0,1]: 1 + 0 * 4 = 1
tab[2,3]: 3 + 2 * 4 = 11
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
#include <iostream>
using namespace std;

int main()
{
	int tb[3][3]={{1,2,3},{4,5,6},{7,8,9}};
	for(int y=0;y<3;++y,cout<<endl) for(int x=0;x<3;++x) cout<<*(*(tb+y)+x)<<' ';
	return 0;
}

Z tym że nie widzę sensu w takim zapisie

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.