C++ 공부하다가 의문이 생겨서 질문드립니다.
#include <iostream>
using namespace std;
int main()
{
int a[2][2][3] = {{{4,5,6},{7,8,9}},{{10,11,12},{13,14,15}}};
int (*p)[2][3];
p=a;
cout<<"배열 a의 시작 번지 표현: a, &a[0], *a, **a n";
cout<<a<<" "<<&a[0]<<" "<<*a<<" "<<**a<<endl;
for(int i=0; i<2; i++)
{
for(int j=0; j<2; j++)
{
for(int k=0; k<3; k++)
{
cout<<a[j][k]<<" ";
cout<<a[i][j][k]<<" ";
cout<<*(*(*(a+i)+j)+k)<<" ";
cout<<*(*(*(p+i)+j)+k)<<endl;
}
return 0;
}
위의 코드 중에서서 p=a; 에 대입하면
p=&a[0][0][0]인데, for문의 cout<<a[j][k]<<" "; 부분은 그럼 어떻게 되는 건가요?
실행하면 a의 3차원 행렬과 같은 값이 나오는데, 왜 그렇게 되는지 이해를 하지 못해서요,
원래 배열의 특성상 a배열 12개의 값을 갖고 포인터 p배열은 6개를 갖는데 어떻게 출력시 12개의 값을 모두 출력하지요?? 은 부탁드립니다.
라고 했을때 p는 a랑 같을까요? 틀릴까요?
p는 배열일까요? 포인터일까요?