본문 바로가기

programming language/C 언어

오늘 공부한 다차원 배열(2차원 배열의 선언 방법)

그냥 제가 오늘 공부했던 예제 옮겨놓은 것입니다. 

#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차원 배열을 선언과 동시에 초기화하는 경우에는 배열의 세로 길이만 생략이 가능해진다.