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;


모두로 변환할 수 있다.

+ Recent posts