2차원 배열이름의 포인터형
int arr[3][4]일때 , arr은 이차원배열의 첫번째주소를나타내고, arr+1은 arr의 주소값에 sizeof(int)*4 값을 더한 주소값을 나타낸다 ( 다음행의 첫번째 열 주소값 ) 따라서 2차원 배열이름의 포인터형은 열의 길이에따라 달라진다.
2차원 배열의 포인터형 : int (*ptr)[4];
+1마다 얼마나 건너뛸건지 알려주기위해 선언에 열의길이를 입력해야한다.
// int *ptr[4] 은 주소값을 저장하는 포인터 배열이다.
2차원 배열을 인자로 전달
int arr1[2][7];
double arr2[4][5];
void SimpleFunc ( int(*parr1)[7] , double(*parr2)[5] ) { ... }
혹은
void SimpleFunc ( int parr1[][7] , double parr [][5] ) { ... }
// 매개변수에 한해 , 둘다 같은 선언이다.
2차원 배열에서도 arr[i] 와 *(arr+1)은 의미가 같다.
arr[2][1] = 4; 는
*(arr+2)[1] = 4;
*(arr[2]+1) = 4;
*((arr+2)+1) = 4;
모두로 변환할 수 있다.
'C언어 > 열혈C' 카테고리의 다른 글
C : Chapter-17 문자와 문자열 관련 함수 (0) | 2018.03.27 |
---|---|
C : Chapter -16 함수 포인터와 void 포인터 (0) | 2018.03.25 |
C : Chapter -14 이중 포인터 (0) | 2018.03.23 |
C : Chapter -13 다차원 배열 (0) | 2018.03.23 |
C : Chapter -12 포인터와 함수 (0) | 2018.03.22 |