다차원 배열의 값과 주소
학습목표 - 다차원 배열의 값과 그 주소 값의 결과를 이해할 수 있다.
p/338 Ch.16. 다차원 배열
행렬에서 행은 가로줄, ㅎ을 쓸 때 -부터 쓰고 가로로 움직인다. 가로줄
열은 세로줄, ㅇ을 쓸 때 위에서 아래로 세로로 움직인다. 세로줄
p/339의 예제
(가로 입력 값 * 세로 입력 값) * 변수형의 크기 임을 알 수 있다.
p/342 예제
Define을 컴파일 시 지정하여 컴파일 할 수 있다. 명령어는
‘/D‘는 #define의 역할을 한다.
띄우지 않고 ‘define을 원하는 변수명 = 넣고 싶은 값’을 넣으면 #define 형태의 명령어를 컴파일 시 삽입할 수 있는 것이다.
이중 for문을 활용하여 사람이 이해하기 쉬운 형태의 배열로 표현해 보자.
N과 M의 값을 입맛대로 바꿔서 코딩해보자.
2차원 배열의 주소는 메모리상에 연속으로 만들어진다.
배열에서 주소 값이 똑같은 것
배열이름
대괄호 하나의 주소값
배열이름에 + X는 X만큼 줄 이동
배열[] + X는 X만큼 칸 이동
** 칸 이동은 선언된 변수형의 크기만큼 된다.
배열에 &를 붙이면 배열 전체의 주소를 뜻한다. 때문에 해당 주소 값에 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은 배열의 가장 처음에서 한 칸을 이동한 주소 값을 가지게 된다. 여기에 포인터를 붙이면 *과 &는 상쇄되어 해당 값을 가지게 된다.
'Busan IT > 공장내 Network' 카테고리의 다른 글
포인터와 3차원 배열 (0) | 2015.04.17 |
---|---|
포인터를 활용한 1/2차원 배열의 값과 주소 (0) | 2015.04.16 |
구조체와 사용자 정의 자료형 (0) | 2015.04.14 |
Linux 기초 및 구조체의 메모리 구조 (0) | 2015.04.13 |
구조체 포인트, linux 기초 (0) | 2015.04.10 |