29강. 2차원 배열과 포인터 (1)

-
3행 2열인 2차원 배열이 있다.
-
각 번지 옆의 데이터들은 실제로 데이터가 들어가는 배열 영역이다.
첫 시작주소를 100이라고 했을때, 배열이라는 것은 물리적으로 연속된 공간이므로,
주소는 100, 101, 102... 순차적으로 올라간다.
-
각각의 행을 대표하는 데이터가 있다. 100,101번지의 행의 대표 주소값이 100인 것 처럼, 대표 행의 대표 주소값은 첫번째 주소값이다.
-
배열 a가 대표하는 주소값은 첫번째 행의 주소값이다. 따라서 a의 주소값은 100이다.

- a를 출력: 주소값을 출력하므로 100을 출력.
- *a를 출력: a에는 주소값 100이 들어있다. 하지만 이것이 가르키는 것은 값 '1'이 아니라 a[0]의 대표 주소값 100이다. 앞서 "배열 a가 대표하는 주소값은 첫번째 행의 주소값이다."라고 했다. 따라서 a[0]의 대표 주소값 100을 가르킨다. 100번지가 2개가 있기 때문에 헷갈릴 수도 있으니 주의해야 한다.
- a를 출력: a의 값의 값을 출력한다. a의 값은 a[0]의 주소값 100이다. a[0]의 주소값 100의 값은 1이다.

행값은 없고 열값이 3개다. 따라서 값 3개씩 끊는다는 뜻이다 -> (1,3,4), (5,2,9), (6,8,7)

포인터 변수 p는 data[1]을 갖는다. 따라서 p는 주소값 103을 갖는다.
x에는 p의 값, 103번지의 값은 5다.
y에는 (p+2)의 값, 105번지의 값은 9다.
따라서 x,y를 출력하면 5,9다.
30강. 2차원 배열과 포인터 (2)


3행 3열의 2차원 배열이다.
따라서 1은 100번지, 2는 101번지 3은 102번지 ... 이렇게 적용된다.
- sum1 = (darr+1) + (darr+2); : darr의 값은 100번지이다. darr의 대표주소값인 100번지의 값은 darr[0]의 대표값 100번지다. (1이 아님 주의!!)
100번지 +1 은 101이므로, 101번지의 값은 2다.
(darr+2)는 마찬가지로 3이다. 따라서 2+3=5이므로 sum1=5다.
- sum2 = darr[1] + darr[2];: 103번지의 값은 4다. 106번지의 값은 7이다.
따라서 sum2 = 11이다.
sum1,sum2를 출력하면 5,11이다.