그냥 제가 오늘 공부했던 예제 옮겨놓은 것입니다.
#include<stdio.h>
int main(void)
{
int villa[4][2];
int popu, i, j;
//가구별 거주인원 입력받기//
for (i = 0; i < 4; i++)
{
for (j = 0; j < 2; j++)
{
printf("%d층 %d호 인구수: ", i + 1, j + 1);
scanf("%d", &villa[i][j]);
}
}
for (i = 0; i < 4; i++)
{
popu = 0;
popu += villa[i][0];
popu += villa[i][1];
printf("%d층 인구수: %d\n", i + 1, popu);
}
return 0;
}
참고: 2차원 배열도 메모리상에는 1차원의 형태로 존재한다
---2차원 배열 초기화의 예---
#include<stdio.h>
int main(void)
{
int i, j;
//2차원 배열 초기화의 예1//
int arr1[3][3] = {
{1,2,3},
{4,5,6},
{7,8,9}
};
//2차원 배열 초기화의 예2//
int arr2[3][3] = {
{1},
{4,5},
{7,8,9}
};
//2차원 배열 초기화의 예3//
int arr3[3][3] = { 1,2,3,4,5,6,7 };
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
printf("%d", arr1[i][j]);
printf("\n");
}
printf("\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
printf("%d", arr2[i][j]);
printf("\n");
}
printf("\n");
for (i = 0; i < 3; i++)
{
for (j = 0; j < 3; j++)
printf("%d", arr3[i][j]);
printf("\n");
}
return 0;
}
int arr1 [][] ={1,2,3,4,5,6,7,8,}; 은 컴파일 에러 발생! 가로와 세로의 경우의 수가 너무 많다. 가로와 세로 둘 다 주어져 있지 않으면 불가능하다
그래서 int arr1 [ ][4] ={1,2,3,4,5,6,7,8,}; 이런 식으로! 2차원 배열을 선언과 동시에 초기화하는 경우에는 배열의 세로 길이만 생략이 가능해진다.