C언어 이론 - 기초(1)

cookie_OH·2021년 2월 27일

C언어

목록 보기
2/2

배열

자료형 배열이름[크기] = {요소}; //배열의 초기화 (배열의 크기보다 요소가 적은 경우, 빈공간 0값이 들어감)

int numArr[5] = {10, 20, 30, 40, 50};
printf("%d\n", numArr[0]);	// 배열 numArr[0]번째 주소의 요소값 출력

배열에서의 반복문

반복문에서 나오는 각각의 요소들을 이용해서 배열 출력 가능

for(cnt = 0; cnt < 5; cnt++)	//반복문 요소값 생성
	socre [cnt] = 0;	//배열의 크기를 반복문 cnt의 순서로 불러옴

배열의 문자열

문자 및 문자열은 ASCII의 1바이트 크기로 저장
문자 - ''(작은따옴표)로 선언

char str[5] = 'H', 'e', 'l', 'l', 'o';

문자열 - ""(큰타옴표)로 선언

char str[6] = "hello\0"	//문자열에서는 항상 마지막에 NULL값을 지정해줘야 한다. 따라서 배열의 크기도 문자의 개수보다 1이상 크게 지정해야함

2차원 배열

배열의 크기를 행과 열로 나타낸 2차원 구조.
int a [행][열];
초기화 값을 행별로 구분하는 방법의 예로는

int a[3][4] = 
{
	{1, 2, 3, 4},	//1행의 초기값
    	{5, 6, 7, 8},	//2행의 초기값
    	{9, 10, 11, 12}	//3행의 초기값 
};	

이렇게 표현할 수 있고, 프린트문으로 구조를 보면

printf("%d %d %d %d \n", a[0][0], a[0][1], a[0][2], a[0][3]);
printf("%d %d %d %d \n", a[1][0], a[1][1], a[1][2], a[1][3]);
printf("%d %d %d %d \n", a[2][0], a[2][1], a[2][2], a[2][3]);
/*
--출력--
1 2 3 4
5 6 7 8
9 10 11 12
*/

행과 열의 순서로 요소를 출력할수 있다. (2차원 배열의 구조에서도 for문을 응용해서 요소값을 출력할수 있다.)

    int col = sizeof(a[0]) / sizeof(int);  
    int row = sizeof(a) / sizeof(a[0]); 
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }

주의점: 2차원 배열에서의 크기는 생략이 가능하지만 열의 크기는 불가능.

int a[3][] = {10, 20, 30, 40, 50, 60, 70, 80, 90};	//불가능
int a[][3] = {10, 20, 30, 40, 50, 60, 70, 80, 90};	//가능

3차원 배열

2차원 배열에서 면이 추가된 3차원 구조.
int a [면][행][열];

int a [2][3][4] =
{{
	{1, 2, 3, 4},
	{5, 6, 7, 8},	//0면의 행과 열 
	{9, 10, 11, 12}
},
{
	{1, 2, 3, 4},
	{5, 6, 7, 8},	//1면의 행과 열
	{9, 10, 11, 12}
};

2차원의 배열이 겹겹이 쌓여있는 구조로 생각하면 이해하기 쉽다.

profile
coding

0개의 댓글