37.2 2차원 배열의 크기 & 반복문
2차원 배열의 크기 구하기
2차원 배열이 차지하는 전체 공간과 가로, 세로 요소의 개수는 sizeof
연산자로 구할 수 있다.
#include <stdio.h>
int main()
{
int numArr[3][4] = { // 세로 크기 3, 가로 크기 4인 int형 2차원 배열 선언
{ 11, 22, 33, 44 },
{ 55, 66, 77, 88 },
{ 99, 110, 121, 132 }
};
printf("%d\n", sizeof(numArr)); // 48: 4바이트 크기의 요소가 12(4*3)개이므로 48
int col = sizeof(numArr[0]) / sizeof(int); // 4: 2차원 배열의 가로 크기를 구할 때는
// 가로 한 줄의 크기를 요소의 크기로 나눠줌
int row = sizeof(numArr) / sizeof(numArr[0]); // 3: 2차원 배열의 세로 크기를 구할 때는
// 배열이 차지하는 전체 공간을 가로 한 줄의 크기로 나눠줌
printf("%d\n", col); // 4
printf("%d\n", row); // 3
return 0;
}
2차원 배열이 차지하는 전체 공간
sizeof
로 2차원 배열의 크기를 구해보면 배열이 차지하는 전체 공간이 출력된다.
printf("%d\n", sizeof(numArr)); // 48: 4바이트 크기의 요소가 12(4*3)개이므로 48
가로(column, 열)의 요소 개수
가로의 요소 개수를 구하려면 2차원 배열의 가로 한 줄의 크기를 구한 뒤, 요소의 크기로 나눠준다.
int col = sizeof(numArr[0]) / sizeof(int); // 4 : 2차원 배열의 가로 크기를 구할 때는 // 가로 한 줄의 크기를 요소의 크기로 나눠줌
세로(row, 행)의 요소 개수
세로의 요소 개수는 배열이 차지하는 전체 공간을 가로 한 줄의 크기로 나눠주면 된다.
int col = sizeof(numArr) / sizeof(mumArr[0]); // 3: 2차원 배열의 세로 크기를 구할 때는 // 배열이 차지하는 전체 공간ㅇ르 가로 한 줄의 크기로 나눠줌
반복문
2차원 배열의 요소 모두 출력하기
#include <stdio.h>
int main()
{
int numArr[3][4] = { // 세로 크기 3, 가로 크기 4인 int형 2차원 배열 선언
{ 11, 22, 33, 44 },
{ 55, 66, 77, 88 },
{ 99, 110, 121, 132 }
};
int col = sizeof(numArr[0]) / sizeof(int); // 4: 2차원 배열의 가로 크기를 구할 때는
// 가로 한 줄의 크기를 요소의 크기로 나눠줌
int row = sizeof(numArr) / sizeof(numArr[0]); // 3: 2차원 배열의 세로 크기를 구할 때는
// 배열이 차지하는 전체 공간을 가로 한 줄의 크기로 나눠줌
for (int i = 0; i < row; i++) // 2차원 배열의 세로 크기만큼 반복
{
for (int j = 0; j < col; j++) // 2차원 배열의 가로 크기만큼 반복
{
printf("%d ", numArr[i][j]); // 2차원 배열의 인덱스에 반복문의 변수 i, j를 지정
}
printf("\n"); // 가로 요소를 출력한 뒤 다음 줄로 넘어감
}
return 0;
}
- 먼저 배열의 세로 크기와 가로 크기를 구해준다.
- 그 후 for 반복문으로 세로부터 반복한 뒤 가로를 반복하면서 2차원 배열의 요소를 출력한다.
- 2차원 배열의 세로 인덱스에는 i, 가로 인덱스에는 j를 넣으면 배열의 요소를 순서대로 접근할 수 있다.
2차원 배열의 요소 역순으로 출력하기
#include <stdio.h>
int main()
{
int numArr[3][4] = { // 세로 크기 3, 가로 크기 4인 int형 2차원 배열 선언
{ 11, 22, 33, 44 },
{ 55, 66, 77, 88 },
{ 99, 110, 121, 132 }
};
int col = sizeof(numArr[0]) / sizeof(int); // 4: 2차원 배열의 가로 크기를 구할 때는
// 가로 한 줄의 크기를 요소의 크기로 나눠줌
int row = sizeof(numArr) / sizeof(numArr[0]); // 3: 2차원 배열의 세로 크기를 구할 때는
// 배열이 차지하는 전체 공간을 가로 한 줄의 크기로 나눠줌
for (int i = row - 1; i >= 0; i--) // 세로 크기 - 1부터 역순으로 반복
{
for (int j = col - 1; j >= 0; j--) // 가로 크기 - 1부터 역순으로 반복
{
printf("%d ", numArr[i][j]); // 2차원 배열의 인덱스에 반복문의 변수 i, j를 지정
}
printf("\n"); // 가로 요소를 출력한 뒤 다음 줄로 넘어감
}
return 0;
}
- 반복문의 초깃값에 배열의 세로 크가와 가로 크기를 바로 넣으면 처음부터 배열의 인덱스를 벗어난 상태가 된다.
- 배열의 인덱스는 0부터 시작하므로 마지막 요소의 인덱스는 요소의 개수 -1을 해줘야 한다.
출처
https://dojang.io/mod/page/view.php?id=310
https://dojang.io/mod/page/view.php?id=311
Author And Source
이 문제에 관하여(37.2 2차원 배열의 크기 & 반복문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shuajjjjj/37.2-2차원-배열의-크기-반복문저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)