Programming/C

C언어 - 2차원 배열과 1차원 포인터 변수

경원구 2016. 5. 17. 09:30

<2차원 배열과 1차원 포인터 변수>

 

이번에는 1차원 포인터 변수에 2차원 배열의 시작주소를 대입해 2차원 배열에 접근하는 방법을 알아보자


<실습>

-결과-

 

 

왜 오류가 날까? 여기서 p2차원 배열의 행과 열을 전혀 알지 못한다.

단지 p가 알고있는 사실은 배열의 첫 주소만 알 뿐이다.

바로 여기서 p 2차원 포인터 변수가 아닌 1차원 배열 포인터 변수라는 사실을 말해준다.

그러므로 p1차원적으로 2차원 배열에 접근하게되는 것이다.

만약 여기서 p1을 더해서 p[0]+1과 같이 한다면 행단위로 움직이는 것이 아니기 때문에 적합하지않다. 1차원 포인터 변수인 p1차원 포인터 변수처럼 행동해야 한다.

, p+i라고 해야지 다음 주소를 알아낸다.

2차원 배열에 저장되어 있는 원소들은 p가 접근하기에 1차원 배열처럼 접근할 것이다.

p+0은 첫번째에 저장되어 있는 원소의 주소, p+1은 두번째에 저장되어 있는 원소의 주소...이렇게 말이다. 왜냐? +1씩 할때마다 행 단위로 움직이는 것이 아니기 때문이다.

1차원 포인터 배열이라는 것을 명심하자

 

<실습>

 


-결과-