반응형
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 |
댓글