1. 1차원 배열함수를 하위배열에 적용
void dub(int ar[], int size);
int junk[3][4];
for(i=0;i<3;i++)
dub(junk[i],4);
2. 1차원 배열함수를 2차원 배열에 적용
void dub(int ar[], int size);
int junk[3][4];
dub(junk[0],3*4);
2차원 배열이 메모리안에서는 커다란 하나의 배열로 저장 된 것을 이용
하지만 개념적으로 사용하기 좋지 않어.
3. 2차원 배열 함수 적용 -> 함수의 열과 행에 대한 정보에 호환
void dub(int ar[][4],int size) or void dub(int (*ar)[4],int size) //컴파일러 : 배열식 포기 -> 포인터식 표기
dub(junk,3)
함수안에서 2차원 배열처럼 사용
int ar[][]; //잘못된 선언, 예를 들어 ar[1]->ar+1 ar가 가리키는 객체의 크기를 알아야함
따라서 int ar[][4]; //ar이 4개의 int로 이루어진 배열, ar+1 : ar주소에 int 4개 만큼의 크기를 더해라
첫번째[]에 대하여 컴파일러는 무엇을 해야 할지 알지 못한다.
따라서 void dub(int ar[3][4],int n); //3은 무시된다.
일반적으로 n차원 배열을 가리키는 포인터를 선언할 떄 첫번째 []를 제외한 나머지 []에서 반드시 값을 모두 지정해야 한다.
'c' 카테고리의 다른 글
기본 논리 (0) | 2012.11.20 |
---|---|
출력형식(printf) 변환명세와 필드값 정렬 (0) | 2012.11.20 |
n비트에서 -a의 2의 보수 계산 방법 (0) | 2012.11.15 |
다차원 배열과 포인터 (0) | 2012.11.14 |
const 와 포인터 (0) | 2012.11.13 |