Tablica dwuwymiarowa na wskaźnikach

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)

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

0

Tablica dwuwymiarowa:

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:

[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

tab[1,2]: 2 + 1 * 4 = 6
tab[0,1]: 1 + 0 * 4 = 1
tab[2,3]: 3 + 2 * 4 = 11
1
#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

1 użytkowników online, w tym zalogowanych: 0, gości: 1