Programming Learning Diary

2차원 배열과 배열 포인터

페이지 정보

작성일 19-11-22 15:50

본문

int main(){

int arr[2][3] = {{1,2,3},{4,5,6}}; //2차배열 선언


printf("%d\n", sizeof(arr)); //24

printf("%d\n", sizeof(arr[0])); //12

printf("%d\n", sizeof(arr[0][0])); //4


//arr의 전체 배열의 사이즈는 24

//arr의 1번째 행의 사이즈 12

//arr의 1번째행1열의사이즈 4


//모두 같은 주소값

printf("%d\n", &arr);  

printf("%d\n", &arr[0]);

printf("%d\n", &arr[0][0]);


//세가지 모두 arr배열의 첫번째행의첫번째열의 주소를 나타내고 있다. 이는 배열의 주소를 대표한다고 보면 된다.


int(*ptr)[3] = arr;

//1.ptr[i]=-arr[i]

//2.ptr[i][j]==arr[i][j]

//3.ptr==arr

for (int i = 0; i < 2;i++) {

for (int j = 0; j < 3;j++) {

printf("%d",ptr[i][j]);

}

printf("\n");

}


for (int(*row)[3] = arr; row < arr + 2; row++) { 

//int(*row)[3] = arr; 이 식에서 row 는 arr의 첫번째 주소를 가지게 된다.

//arr+2 의 부분에서 배열의 첫 주소에서 int 사이즈만큼 2번가는 시점만큼 계산하라는 것을 알 수 있다

for (int *col = *row; col < *row + 3; col++) {

//*coㅣ = *row 부분에서 row 배열포인터의 시작값이 들어간 것을 알 수 있다.

//col<+row+3;  부분에서 row 배열 포인터 배열의 주소값에서 3번가는 시점만큼 계산하라는 것을 알 수 있다

printf("%d/",*col);

}

printf("\n");

}

}  

댓글목록

등록된 댓글이 없습니다.