언어/C언어_기초

36강 | 배열 포인터

hyehh 2024. 2. 26. 07:25
728x90
반응형
SMALL
728x90
반응형
SMALL

36강 | 배열 포인터 

자료 출처 - 깨알 C언어 | 36. 배열포인터 (youtube.com)


배열포인터?

배열의 시작 주소값을 저장할 수 있는 포인터 2차원 배열의 구조

그냥 하나의 포인터일 뿐이다.

 

포인터인데, 배열이다.

근데, 이게 자기가 가지고 있는 갯수를 지가 알아서 다시 잘라버린다. 다시 재조합을 해버린다.


 

배열포인터를 선언할때에는 int(*in)[2] 이렇게 선언한다.

in이라는 포인터를 만들것인데, 개를 괄호로 묶고, 2개씩 자를것이야. "나는 어떤 구조가 들어오든 2개씩 자를것이야"

 

int num[3]={1,2,3}

num이라는 배열을 만들었는데, 3개의 공간으로 만들었다. 1,2,3이라는 초기값을 줬다.

처음에 시작하는 주소가 100번지라고 가정하면, num이라는것은 100이라는 번지를 가지고 있다.

 

in = num

in에다가 num을 대입했다. 그러면 100번지가 그대로 들어간다. 그리고 나서, 원래는 3개가 있었는데, 2개씩 자른다. 

그렇게 해서 2차원 배열로 만들어버린다. 이런게 바로 배열 포인터이다.

 

메모리상에서는 물리적으로는 그대로 있다.

논리적으로만 이렇게 잘리는것이다. 그냥 그 프로그램상에서만 그렇게 잘리는 것이다.

 

1과 2를 가지는 하나의 행 배열을 만들어놓고,

2차원 배열을 만든다고 했으니깐, 3을 가지는 두번째 배열을 만든다.

 

이렇게 2차원 배열을 만들때에는 행 대표주소가 있다.

0번지의 행 대표주소는 100번지가 되고, 1행의 대표주소는 102번지가 된다.

 

출력

in을 출력하면 100번지가 출력된다.

num을 출력하면 100번지가 출력된다.

in의 값을 출력하면 0행의 대표주소를 가리키고 있다. 100번지가 출력된다. 


in의 값은 100번지를 말하고 100번지의 값은 1이다. 

in의 값은 100번지이다. 100+1은 101번지이다. 101번지의 값은 2이다.

in의 값은 100번지이다. 100+2 102번지의 값은 3이다.

in의 1번지의 값은 102번지이다. 102번지의 값은 3이다.


 

728x90
반응형
LIST