✅ 아래와 같은 코드를 어떻게 해석해야 할까?

아래 코드는 3개짜리의 배열이 2개가 있고, 각 요소가 int**인 이중 포인터 이차원 배열이다.

int** x[2][3]; 

위 해석이 한방에 들어온다면, 다음 내용을 굳이 읽어볼 필요는 없다.

위 내용이 한방에 들어오지 않는다면, 찬찬히 해석해 보자.

위 코드의 구조, 사이가 벌어진건 이해를 돕기 위함 (실제로는 연속적으로 붙어있다.)

위 코드의 구조, 사이가 벌어진건 이해를 돕기 위함 (실제로는 연속적으로 붙어있다.)

✅ 변수 x는 왼쪽, 오른쪽 어디로 결합되는가?

일단 x가 어디로 결합되는지를 알아야 한다.

[]와 *는 모두 연산자이다.

오른쪽으로 결합하면 배열이고, 왼쪽으로 결합하면 포인터이다.

int **(x[2])[3]; //(1) O
int *(*x)[2][3]; //(2) X

(1)이다.

왜요?

C의 연산자 개요