Busan IT/공장내 Network2015. 4. 15. 17:45

다차원 배열의 값과 주소

 

학습목표 - 다차원 배열의 값과 그 주소 값의 결과를 이해할 수 있다.

 

p/338 Ch.16. 다차원 배열

 

행렬에서 행은 가로줄, 을 쓸 때 -부터 쓰고 가로로 움직인다. 가로줄

열은 세로줄, 을 쓸 때 위에서 아래로 세로로 움직인다. 세로줄

 

p/339의 예제

 

(가로 입력 값 * 세로 입력 값) * 변수형의 크기 임을 알 수 있다.

 

p/342 예제

Define을 컴파일 시 지정하여 컴파일 할 수 있다. 명령어는

‘/D‘#define의 역할을 한다.

띄우지 않고 ‘define을 원하는 변수명 = 넣고 싶은 값을 넣으면 #define 형태의 명령어를 컴파일 시 삽입할 수 있는 것이다.

 

 

이중 for문을 활용하여 사람이 이해하기 쉬운 형태의 배열로 표현해 보자.

 

NM의 값을 입맛대로 바꿔서 코딩해보자.

 

2차원 배열의 주소는 메모리상에 연속으로 만들어진다.

 


 

배열에서 주소 값이 똑같은 것

 

배열이름

대괄호 하나의 주소값




 

배열이름에 + XX만큼 줄 이동

배열[] + XX만큼 칸 이동

 

** 칸 이동은 선언된 변수형의 크기만큼 된다.

 

배열에 &를 붙이면 배열 전체의 주소를 뜻한다. 때문에 해당 주소 값에 1을 붙이면 배열의 마지막 주소에서 선언된 변수의 크기만큼의 값이 더해지는 주소 값이 나오게 된다.

 

정리해보면, 2차원 배열에서

 

&배열 이름 - 배열 전체의 주소

배열 이름 - 배열 1

배열[] - 배열 1

&배열[][] - 배열 1

 

 

 

1차원 배열에서는

 

&A + 1 - 1차원 배열 크기만큼 이동

A +1 - 한 칸 이동

 

&*이 만나면 서로 상쇄되어 본래의 값이 된다.

 

*A = *&A[0]

*A = A[0]

 

*(A+1) = A[1]

 

배열의 값을 표현하는 방식은 2가지이다.

 

배열자체의 이름을 출력하는 방법과 포인터를 사용하여 출력하는 방식이 있다.

 

복잡해 보이지만 이해하는 방법은 간단하다.

 

배열자체를 적으면 그것은 주소를 뜻한다. 때문에 거기에 포인터(*)붙혀주면 해당 값을 찾아가게 되는데 &*이 붙으면 그 값은 상쇄되어 값을 도출하게 된다.

 

1차원 배열에서 A+1은 배열의 가장 처음에서 한 칸을 이동한 주소 값을 가지게 된다. 여기에 포인터를 붙이면 *&는 상쇄되어 해당 값을 가지게 된다.





 

 

 

 

 

 

 

 

반응형
Posted by newind2000