Inertia

c++ pointer

c/c++에서 가장 이해하기 어려웠던 것중에 하나가 포인터가 아닐까..

2d|3d array as a pointer

2d array를 받는 포인터는 한차원 낮은 포인터로 표현될 수 있다. 여기서 size를 알아야 한차원 만큼을 offset 이동할 수 있기 때문인듯 하다. 2d array인경우 row가 1 증가할때 column 만큼의 포인터가 이동이 되어야 하는데 이것을 그냥 포인터-int*로 받으면 컬럼 정보를 알 수 없기 때문이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
const int row=10;
const int column=20;
const int depth=5;
int a2d[row][column];
int a3d[depth][row][column];

int (*p2)[column];
int (*p3)[row][column];
a2d[1][1] = 5;
p2 = a2d;
p3 = a3d;

assert(p2[1][1]==5);

Reference