다차원 배열(2차원 이상)
2차원 배열 이름 +1 : 배열 이름을 이용한 포인터 연산
포인터의 타입에는 이동에 대한 정보가 들어 있다.
임의의 두 포인터 타입이 일치한다면, 기본적으로 포인터 연산에 증가 및 감소되는 크기가 일치해야 한다고 생각되어진다.
하지만
int a[3][2];
int b[2][3];
에서 보면 형(Type)은 일치하지만 연산 증가치가 달라 둘은 포인터 타입이 다르다.
이를 풀어 쓰면,
배열 이름 a는 int형이고 포인터 연산시 배열 요소를 2칸씩(2*4) 건너뛰는 포인터이고,
배열 이름 b는 int형이고 포인터 연산시 배열 요소를 3칸씩(3*4) 건너뛰는 포인터이다.
배열 이름의 포인터 타입.
int arr[2][4];
int (*pArr)[4]; //== int pArr[][4]; <-단 함수 매개변수 선언시에만 가능.
이 것은 포인터를 선언한 것이다.pArr이라는 이름의 포인터를 선언한 것이며, 포인터 앞에 있는 int와 뒤에 있는 [4]는 포인터의
타입(4칸씩 건너뛰는 포인터 타입)을 설명한 것이다. 이렇게 포인터가 배열을 가리킬 수 있다고 해서 배열 포인터라고 한다.
※ int (*pArr)[4]와 int* pArr[4]의 차이점
전자는 2차원 배열을 가리키는 포인터이고, 후자는 int형 변수의 주소 값 4개를 생성해서 저장할 수 있는 배열이다.
'C언어 프로그래밍' 카테고리의 다른 글
입력 받은 값을 거꾸로 출력하는 프로그래밍 (0) | 2009.09.15 |
---|---|
숫자를 입력 받아서 각각의 개수와 합을 구하는 프로그래밍 (0) | 2009.09.15 |
C언어 요약 내용 -1 (0) | 2009.09.15 |
c언어 표준 키워드들 (0) | 2009.09.15 |
포인터와 const 키워드 (0) | 2009.09.15 |