본문 바로가기

Programming/C Programming

이차원 배열(포인터) 활용

int arr[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

int (*bbb)[3] = arr+1;

printf("%d\n", bbb[0][0]);


출력 4




이중 배열의 주소를 1중 배열로 받아서 쓰기


#define MAX 128

int g_arr[MAX * 2][MAX];

int(*g_arr_128)[MAX] = g_arr;

int(*g_arr_64)[MAX] = g_arr + 128;

int(*g_arr_32)[MAX] = g_arr + 128 + 64;

int(*g_arr_16)[MAX] = g_arr + 128 + 64 + 32;

int(*g_arr_8)[MAX] = g_arr + 128 + 64 + 32 + 16;

int(*g_arr_4)[MAX] = g_arr + 128 + 64 + 32 + 16 + 8;

int(*g_arr_1)[MAX] = g_arr + 128 + 64 + 32 + 16 + 8+4;


void main()

{

int((*aaa[7]))[MAX] = { g_arr_1, g_arr_4, g_arr_8, g_arr_16, g_arr_32, g_arr_64, g_arr_128 };


int ttt = 1;

for (int i = 0; i < 7; i++)

{

int(*tmp)[MAX] = aaa[i];

tmp[0][0] = ttt++;

}

}




Trash_info class 의 포인터를 저장하는 2차원 배열 중 g_can_inside[1] 에 저장된 1000개의 배열을 1차원 배열로 받아서 순환하면서 출력


class Trash_info {

public:

int m_trash_value[CAN_MAX];

int m_order_can[CAN_MAX];

int m_pos_trash;

}


Trash_info* g_can_inside[CAN_MAX][TRASH_MAX];


int main()

{

Trash_info* (*t_info)[TRASH_MAX] = g_can_inside + 1;

////////////

for (int i = 0; i < 10; i++) {

cout << "test : " << (*t_info)[i]->m_trash_value[0] << endl;

}

////////////

}