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");
}
}
댓글목록
등록된 댓글이 없습니다.