[C] 2차원 배열의 표현

C 2019. 12. 4. 00:04

1. 2차원 배열의 기본 구조
int a[3][2] = { {1,2,}, {3,4}, {5,6} };
1 2 -- 00 01
3 4 -- 10 11
5 6 -- 20 21

2. a[0][1]을 다른 형식으로 나타내보자
2차원 배열에서 a는 1의 주소이다. a[0]는 1의 주소이다. a[0][0]은 주소가 아닌 값 1이다.
a[0]+1은? a[0]에서 1칸(int형이니 4바이트) 옆으로 간 주소를 의미한다. 즉 2의 주소이다.
2를 나타내려면? *(a[0]+1) 이렇게 표현해주면 된다.
그렇다면 a[0][1] == *(a[0]+1) 을 알 수 있었다.
1차원 배열에서 a[0] == *(a+0) 은 알고 있다.
a[0][1] == *(*(a+0)+1)은? 같을까? 같다.

3. 그렇다면 a[2][1]를 다르게 표현해보자
a[2][1] == (*(a+2))[1] == *(*(a+2)+1) == *(a[2]+1)
마음대로 바꿀 수 있을 정도면 된다.

4. **a는 무엇을 나타낼까?
1이다. *(*(a+0)+0) == **aa == a[0][0]

블로그 이미지

ryancha9

https://blog.naver.com/7246lsy

,