티스토리 뷰

안녕하세요 쫑쫑 블로그입니다. :)

이번 시간에는 C언어의 배열을 배울 텐데요.

처음 배우시는 분은 헷갈릴 수도 있으나

개념을 잘 정리한다면 프로그래밍 실력에 훨씬 도움이 될 거라 생각됩니다.

먼저 배열의 개념을 설명드리겠습니다.

 

배열 : 같은 종류의 데이터 타입을 선언 하기 위해 구성된 데이터의 집합입니다.

쉽게 말해 기본의 int float, double, char 등 일반 변수를 선언할 때 사용하는 것들의 집합이라고 생각하면 됩니다.

만일 정수를 5개 선언 하고 싶다면 int 5번 쓰는게 아닌 int arr[5]; 이렇게 쓰는 것이죠

Int(데이터 타입) arr(배열의 이름)[5] (배열의크기); 이렇게 선언하면 됩니다.

 

배열의 경우 C언어를 처음 접하시는 분들은 조금 이해하기 힘드실 수 있으니 천천히 생각해서

사용하다 보면 어느 순간 잘하고 있는 자신의 모습을 볼 수 있을 것입니다. 다들 화이팅 :)

 

EX) int arr[5] = {1, 2, 3, 4, 5};

 

1. 배열 요소 : 배열을 구성하는 각각의 요소{1, 2, 3, 4, 5}는 배열 요소라고 부르게 됩니다.

 

2. 배열의 크기 : 배열은 동일한 데이터 타입이 모여 하나의 덩어리가 만들어 지기 때문에

배열 요소의 개수를 지정할 필요가 있습니다. 쉽게 말해 몇 개의 배열 요소로 구성되는지 명시한다는 것입니다. 배열의 크기는 정수 값만 허용합니다.

 

3. 배열 이름 : 배열은 제가 지정한 데이터타입과 같습니다. 따라서 배열의 이름을

지정해야 하는데 지정한 배열의 이름은 연속적으로 배치된 배열의 시작 주소를 의미합니다.

예를 들어서 int arr[3] = {5, 6, 7}; 이라고 가정한다면

 

이 배열의 이름은 arr이며 이 배열의 시작주소는 arr[0]과 같습니다.

C언어 식으로 표현하자면 arr == &arr[0] 이라는 소리입니다.

따라서 배열을 불러올 때의 과정은 배열이름 à 메모리의 주소 à 해당메모리의 값입니다.

 

4. 배열의 선언 : 데이터 타입 배열이름 [배열의 크기] = {배열요소};

) int arr[5] = {1, 2, 3, 4, 5};

 

Tip) 배열의 크기를 선언하지 않을 경우 int arr[ ]; 초기값이 5개이므로 자동으로

배열의 크기는 5가 됩니다.

Int arr[5]; arr[2] = {28};

이 의미는 배열의 요소 중 3번째 값을 28로 초기화 시키라는 말입니다.

쉽게 말해 배열의 3번째 요소(인덱스)28의 값을 대입시키는 것이죠.

인덱스란 배열의 [ ]부분을 뜻합니다. 그리고 배열은 조심하셔야 하는 부분이 배열의 인덱스는 0부터 시작이라는 것입니다.

int arr[3] = {1,2,3};

1arr[0], 2arr[1], 3arr[2]에 값이 초기화가 되는 것입니다.

 

다른 예시를 든다면

Int arr[3] = { 123, 32, 3};

arr[0]에 초기화 된 값은 무엇일까요? 정답은 123입니다.

배열의 순서가 0으로 시작된다는 것만 이해한다면 다 풀 수 있었겠죠? ㅎㅎ

 

이제 배열의 예제를 들어 드리겠습니다.

문제 : 10가지의 정수를 배열을 사용하여 값을 사용자로부터 입력 받아 그 합을 구하시오.

문제를 보고 저희는 2가지의 변수를 선언해야 하는 것을 알고 있겠죠?

따라서 int arr[10], sum = 0; 이라고 선언을 받습니다.

 

그리고 사용자로부터 값을 10개 입력받으라 했으니 for문을 사용하여 scanf10번 반복 받고

그 값을 배열에 인덱스 값에 저장합니다. 그 뒤 그 값을 sum이라는

변수에 계속 더하여 이를 출력합니다.

for(int i=0; i<=9;i++){

scanf_s(“%d”,arr[i]);

sum = arr[i];

}

printf(“%d”,sum);

return 0;

 

 

그러면 이번에는 배열을 사용하여 5가지의 과목의 평균을 산출하는 프로그램을 만들어봅시다.

#include<stdio.h>

int main( ){

int det[5], count;

double sum = 0, avg =0;

for(count = 0; count <=4;count++){

printf(“%d번째 과목 : ”,count);

scanf_s(“%d”, &det[count]);

sum += det[count];

}

avg = sum/5;

printf(“5과목의 평균 : %lf \n”, avg);

return 0;

}

 

꼭꼭 따라하고 안보고 해보고 하는 과정을 반복해보는 것을 추천드립니다.

그러지 않으면 실력이 늘지 않아요 ㅠㅠ

 

이제 배열의 대해 주의해야할 점만 다시 강조해드리고 이번 포스팅 마치겠습니다.

배열은 중요한 내용이 많아 12편으로 나누었고 2편에는 다중 배열을 설명하겠습니다.

배열의 주의 점

1. 배열의 첨자는 1이 아닌 0부터 시작합니다

2. 배열명은 그 자체가 배열 주소의 값을 가지고 있습니다.

3. 배열의 선언과 함께 초기화 할 경우 배열의 크기는 생략해도 됩니다.

4. 배열의 크기와 초기값의 관계는 초기값>배열의 크기일 경우 에러가 발생하고

초기값 < 배열의 크기 일 경우 나머지 값들은 0으로 초기화 됩니다.

이상 쫑쫑 블로그였습니다.

공감버튼과 댓글은 힘이 됩니다!. :)