본문 바로가기
언어/C

[C] 다차원 배열과 포인터의 관계

by merona99 2018. 11. 11.
반응형

C

다차원 배열과 포인터의 관계


int arr[3][3] 이 있다고 할때,

arr은 첫 번째 요소를 가리키면서 배열 전체를 의미

arr[0]은 첫 번째 요소를 가리키되 1행만을 의미

arr 과 arr[0]은 서로 다름



<2차원 배열의 포인터형>

  • 가리키는 대상은 무엇인가?
  • 배열이름(포인터)를 대상으로 값을 1 증가 및 감소 시 실제로는 얼마가 증가 및 감소하는가?


<선언>

int arr[3][4]


=> "배열이름 arr이 가리키는 대상은 int형 변수이고, arr의 값을 1 증가하면 실제로는 sizeof(int) x 4의 크기만큼 주소 값이 증가하는 포인터 형이다."


=> "arr은 가리키는 대상이 int형 변수이고, 포인터 연산 시 sizeof(int) x 4의 크기단위로 값이 증가 및 감소하는 포인터 형이다."



<배열 포인터 변수 선언>

2차원 배열을 가리키는 용도로만 사용됨


<선언>


int (*ptr) [4];


(*ptr) = ptr은 포인터

int = int형 변수를 가리키는 포인터

[4] = 포인터 연산 시 4칸씩 건너뛰는 포인터


//열의 길이만큼 []안에 숫자를 넣어주면 될듯하다.

  다음 행으로 넘어갈때 만큼의 크기가 필요



&주의사항

'배열 포인터' vs '포인터 배열'


int * a[3];    //포인터 배열

int (*b) [3];    //배열 포인터


(ex)



함수매개변수로 사용하려 할때

int arr[2][3]이 있다면


example(int (*arr)[3])        //example함수

{


}


or


example(int arr[][3])

{


}

로 선언


  • arr[i] == *(arr+i)
반응형

'언어 > C' 카테고리의 다른 글

[C] 함수 포인터와 void 포인터  (0) 2018.11.13
[C] 구조체 (C언어정석_9)  (0) 2018.11.12
[C] 포인터의 포인터  (0) 2018.11.01
[C] 포인터 (C언어정석_7)  (0) 2018.10.31
[C] 다차원 배열  (0) 2018.10.30

댓글