언어/C

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

merona99 2018. 11. 11. 19:09
반응형

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)
반응형