float** arrays_ = nullptr; // 이중 포인터
이중 포인터는 포인터의 포인터이므로, float*이라는 배열의 시작 주소를 담고 있는 arrays_라는 배열이다.
즉, 배열의 배열이라고 생각하면 된다.
배열 = 포인터

위의 3 x 4 행렬이 있을 때,

이렇게 접근하고자 할 때 사용한다.
즉, float** arrays_가 가지고 있는 값은 0x10, 0x11, 0x12를 담고 있는 배열의 시작 주소이다.
그럼 굳이 이렇게 접근하는 이유는?
동적으로 메모리를 할당하고 값을 초기화하려고 [][]를 이용해 접근했는데 오류 났다.
첫 번째 인덱스는 배열의 주소를 담고 있는데 이 주소가 초기화되지 않아서 쓰레기 값을 가리킨다.
그럼 값을 초기화 못하고 그냥 nullptr로만 설정을 해야하나?
먼저 첫번째 인덱스는 배열의 주소를 가지고 있어야 하므로 float 배열을 할당해준다. 따라서 nullptr이 아니라 할당된 배열의 주소를 가지고 있다.
이제 그 배열의 배열에 접근 가능하므로 0.0f로 값을 초기화해줬다.
출처: 홍정모 연구소