-
[삼쾌한IT강의] C언어 배열의 선언과 초기화C언어/이론 2019. 1. 26. 22:13
안녕하세요! 삼쾌한 IT강의 백소라 강사입니다.
이번 포스팅에서는 C언어에서 배열을 선언하는 방법과 초기화 하는 방법에 대한 설명과 사용법에 대해 알려드리도록 하겠습니다.
1. 배열이란?
우리가 학생 30명의 점수를 저장하고 사용해야된다고 볼까요? 그럼 int형 변수를 30개를 선언하고 점수 30개를 각각의 변수에 저장해야하겠죠. 하지만 배열을 이용하면 간단하게 변수를 선언하고 데이터를 저장할 수 있습니다. 배열이라는건 '동일한 자료형 변수의 집합' 이기 때문이죠.
무슨말이냐구요? 아래의 그림을 한번 볼까요? 우리가 기존에 사용했던 int형 변수는 아래처럼 따로따로 저장이 되어있고 개별적인 존재죠.
하지만 배열은 아래 그림처럼 연속적으로 존재하는 데이터라고 보시면됩니다. 예를들어 aa라는 int형 배열을 선언했다면 aa라는 이름으로 우리가 연속적으로 데이터를 사용을 할수가 있습니다. 데이터의 개수는 우리가 지정해주는 크기만큼 사용이 가능하구요.
2. 배열의 선언과 초기화
자, 그럼 본격적으로 배열을 어떻게 선언하고 초기화하는지 살펴볼까요?
1번 방법
데이터타입 변수명 [배열의 크기] ;
변수명[인덱스값] = '저장할 값';
int array [5]; //먼저 배열을 선언 해 줍니다.
array[0] = 1; //각각의 인덱스에 값을 대입 해줍니다.
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;
1번 방법은 우리가 int형 변수를 선언해주고 초기화 해주는 것과 크게 다르지 않습니다. 'int 변수명' 으로 int형 변수를 선언해주었다면, int형 배열의 변수는 변수명 뒤에 [배열의 크기]만 추가 될 뿐입니다. 배열의 원소들을 대입해주는것도 int형 변수에 어떤 값을 대입 해 주는것과 크게 다르지않죠? 다만 배열은 우리가 크기를 지정해줬고, 연속된 데이터를 가지고있다는 특징때문에 인덱스값을 가집니다.
위에 array[0] 에서 0은 인덱스값입니다. 우리가 배열의 크기를 5로 줬다면 인덱스 값은 0부터 4까지. 즉 0부터 배열의 크기-1 까지의 인덱스 값을 갖게됩니다. 컴퓨터가 0부터 숫자를 세기때문에 인덱스 값이 0부터 시작이된다고 생각하면 편할 것 같습니다.
2번 방법
데이터타입 변수명[데이터크기] = { 배열의 원소 } ;
int array[5] = {1, 2, 3, 4, 5}; //배열의 선언과 초기화를 동시에 해줍니다.
1번 방법에 비해 더 간결하죠? 배열을 선언하는 동시에 중괄호를 사용해서 배열의 원소들을 한번에 초기화 해줄 수 있습니다.
3번 방법
데이터타입 변수명 [ ] = { 배열의 원소 } ;
int array[ ] = { 1, 2, 3, 4, 5}; //배열의 선언과 초기화를 동시에. 배열의 크기를 생략
2번과 3번의 차이점이 보이시나요? 3번 방법에서는 배열의 크기를 생략했습니다. 배열의 선언과 초기화를 한번에 해줄때는 이렇게 배열의 크기를 생략할 수 있습니다.
그럼 배열의 원소를 덜 초기화 할수도 있을까? 궁금하실텐데요. 답은 가능하다입니다. 아래의 예시를 볼까요?
일부 배열의 원소만 넣어 초기화 하기
int array[5] = { 1, 2 } ;
배열의 크기에 주목 해 주세요! 배열의 크기가 5이면 다섯개의 값을 초기화 해줄 수 있는데 두가지 값만 초기화를 해줬죠.
array[0] 에는 1이란 값이, array[1] 에는 2라는 값이 대입이 되는데 나머지 2~4번 인덱스의 값은 어떻게 되는걸까요? 나머지 인덱스의 값들은 모두 int형의 기본값이 0으로 초기화가 됩니다.
아래 예시처럼 모든 배열의 원소를 0으로 초기화 할 수도 있습니다.
모든 배열의 원소를 0으로 초기화 하기
int array[5] = { 0 } ;
3. 배열의 크기와 인덱스에 대해
배열을 선언할 때 배열의 크기를 함께 지정 해 주는데, 우리는 배열의 크기를 그 이후에 변경할 수 없습니다. 처음부터 컴퓨터가 배열의 크기가 이렇구나하고 읽어들인 다음에 작동이 되기 때문이죠. 그래서 배열의 크기에는 변수를 사용할 수 없습니다.
int size = 5;
int array[size]; //에러!!
하지만 배열의 인덱스에는 변수를 사용할 수 있습니다.
int array[5] = { 1, 2, 3, 4, 5 } ;
int i;
for(i=0; i<5 ; i++) {
printf("%d\n", array[ i ]);
}
보이시나요? for문 안에서 array 배열에 속한 값들을 출력하는데, 인덱스 값에 i라는 변수를 사용해줬죠. for문을 돌면서 array 인덱스 0 부터 4까지에 있는 값들이 출력됩니다.
이렇게 배열의 인덱스에는 변수를 사용을 할 수 있다는점과 배열의 값들이 연속되어 존재한다는점 때문에 배열을 처리해 줄 때 for문을 많이 사용합니다. 그래서 배열과 for문을 뗄레야 뗄 수 없는 찰떡궁합같은 존재라고 보면 되겠네요!
배열에 대한 설명을 보셨다면 이제 실습을 해봐야겠죠?! 아래 링크로 가서 실습도 해보고 배열에 대해 깊이있는 이해를 해보시기 바랍니다!
2019/01/25 - [C언어/실습예제] - [삼쾌한 예제] C언어 배열 예제
이상 유쾌,상쾌,통쾌 삼쾌한 IT강의, 백소라 강사의 C언어 배열에 대한 설명이었습니다.
내용이 도움이 되셨다면 공감버튼 클릭, 댓글은 센스! 감사합니다.
'C언어 > 이론' 카테고리의 다른 글
[삼쾌한IT강의] 배열과 문자열 (0) 2019.01.27 [삼쾌한IT강의] C언어 2차원 배열 (0) 2019.01.26 [삼쾌한 IT강의] C언어 반복문2편 (while, do while) (0) 2019.01.20 [삼쾌한 IT강의] C언어 반복문1편 (for) (0) 2019.01.20 [삼쾌한 IT강의] C언어 조건문(if, switch case) + 삼항연산자 (0) 2019.01.20 댓글