nt array[2][3]{{1,2,3},{5,6,7}};
int (*p)[3]{array};
문제
- p
- *p
- p+1
- *(p+1)
- *(p+1) +2
- (p + 1)
그럼 위 문제랑 문법적으로 같은 표기는?
p는 첫번째 원소의 주소 >>&array[0]
p+1은 >>&array[0]+1>>&array[1] (한칸 옆으로 가면됨으로)
*(p+1) 역참조가 들어감으로 주소가 삭제 >>array[1]>>array[1][0]
a[i][j] = a[i]+j
j만큼 옆으로 이동으로 표현할 수 있음
(a[i] +j)
(*(a+i)+j)
int main()
{
int array[2][3]{
{1,2,3},
{4,5,6}
};
int(*p)[3] {array};
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
//std::cout<<array[i][j];
std::cout << *(*(p + i)) + j;
}
}
}
or
int main()
{
int array[2][3]{
{1,2,3},
{4,5,6}
};
int *p = &array[0][0];
for(int i = 0;i<6;i++)
{
std::cout<<*p++<<;
//이차원이라도 어차피 옆으로 이동하는것
}