이차원 배열 포인터를 지정해서 사용하는 방법
이렇게 하면, main에 선언된 *input의 포인터 사이즈가 MAX_EOJ_SIZE로 할당된다.
main에서는 input[x][y] 형식으로 사용할 수 있다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EOJ_COUNT 16
#define MAX_EOJ_SIZE 64
typedef struct data {
char input[MAX_EOJ_COUNT][MAX_EOJ_SIZE];
} data_t;
int main() {
data_t *data = malloc(sizeof(data_t));
char (*input)[MAX_EOJ_SIZE] = data->input;
int i;
strcpy(input[0], "abc");
strcpy(input[1], "def");
for(i = 0; i < 2; i++) {
printf("input[%d] : %s\n", i, input[i]);
}
return 0;
}
참고 gdb로 확인
gdb) p &data->input
$5 = (char (*)[16][64]) 0x601010
(gdb) n
19 strcpy(input[0], "abc");
(gdb) p input
$6 = (char (*)[64]) 0x601010
(gdb) p &data->input[1]
$7 = (char (*)[64]) 0x601050
(gdb) p input[1]
$8 = '\000' <repeats 63 times>
(gdb) p &input[1]
$9 = (char (*)[64]) 0x601050
(gdb) q