C언어 - 2차원 배열, 주소체계

Programming/C 2016. 5. 13. 05:00

2차원 배열의 구조부터 알아보자 

int array [4][3];

int : 자료형

array : 배열 이름

[4][3] : *열로 총 12개의 배열의 칸을 확보, , 열의 길이는 무조건 설정해주어야 한다.

 

 

<2차원 배열 선언과 초기화>

int a1[4][3] = {{1,2}, {3}, {4}, {5}};




위에 선언한 2차원 배열을 구조적으로 살펴보면 이런식으로 배열이 만들어 진다.

앞에 [4]는 행을, 뒤에 [3]은 열을 말한다.

 

int  a2[4][3]={1,2,3,4,5}

 

2차원 배열의 원소를 저장하는 방법은 여러가지다.

일일이 모든 배열의 원소에 대입해줘도 돼고, 간략하게 괄호로 표현해도 된다.


<실습>

 

 

2차원 배열의 원소는 arr1[0][0]이런식으로 첫번째는 행, 두번째는 열로 표현이 된다.

 

-결과-





<2차원 배열 주소와 값의 참조>

 

2차원 배열의 주소를 참조하는 연산자는 &이다. 1차원 배열의 주소 연산자와 동일하다.

&연산자 자체가 주소를 나타낼 때 사용하는 연산자이기 때문이다.

, 이번에는 2차원 배열의 주소를 나열해보자. 좀 헷갈릴수도 있지만 자세히 이해하면 쉬울 것이다.

int arr[2][2]={1,2,3,4}; 이렇게 만들어다고 가정하자.

다음 표는 각 자리의 주소를 나타낸 것이다.

 


 

2차원 배열의 대표주소 : arr

첫 번째 행 대표주소 : arr[0] == *(arr+0)

두 번째 행 대표주소 : arr[1] == *(arr+1)

이렇게 구성된다. (실제 하드디스크에는 이렇게 2차원적으로 존재하지 않고 일렬로 존재하지만 논리적으로 설명하기 위해 이렇게 만든것이다. 앞으로도 이렇게 해석하는게 도움이 될 것이다.)

 

 

<실습>

 

-결과-


 

<*연산자>

 

*연산자는 주소안에 있는 값을 참조할 때 사용한다.

예를 들어 int arr[2][2] = {1,2,3,4}를 만들었다고 가정하자. 이때 주소를 표현할 때는 어떻게할까?

&arr[0][0]이면 첫행의 첫번째열의 주소를 출력한다. 그 주소의 값을 참조하고 싶을땐? *연산자를 사용하여 참조하면된다

*&arr[0][0] => 1출력

 

<실습>

-결과-



posted by 경원구