배열
배열은 다수의 데이터를 하나의 이름으로 묶어 놓은 것을 말한다.
비슷한 의미로 사용할 변수가 너무 많을 때 배열을 사용할 수 있다.
예를 들어 학생들의 점수를 변수에 저장하려고 할 때 30개의 변수를 선언하는 것보다
크기가 30인 배열 하나를 선언하는 것이 간편하기 때문이다.
이때 1차원이라는 것은 변수들이 하나의 계층에 모여져 있는 것이라고 생각하면 쉽다.
배열의 선언
배열을 선언하는 데에는 자료형, 배열 이름, 배열 길이가 필요하다.
예를 들어 int형의 이름이 "arr"이고 길이가 5인 1차원배열은 다음과 같이 선언할 수 있다.
#include <stdio.h>
int main()
{
int arr[5];
return 0;
}
위 코드에서 만든 배열은 5개의 변수를 만든 것과 같다.
만들어진 배열에 접근하는 방법은 선언할 때와 마찬가지로 배열 이름 뒤에 대괄호를 쓰고
대괄호 안에 접근을 원하는 배열의 순서를 넣으면 된다.
배열의 접근
배열의 순서는 0부터 시작하기 때문에 위 코드에서 만든 배열에 접근하려면
arr[0], arr[1], arr[2]. arr[3]. arr[4]라고 써야 한다.
또한 배열에 접근할 때 배열의 순서를 나타내는 위치에 상수가 아니라 변수를 사용할 수도 있다.
따라서 다음과 같은 코드를 작성하는 것이 가능하다.
#include <stdio.h>
int main()
{
int arr[5];
int i;
for(i=0;i<5;i++)
{
arr[i] = i+15;
}
return 0;
}
위 코드의 결과로 arr[0]에는 15, arr[1]에는 16, arr[2]에는 17, arr[3]에는 18, arr[4]에는 19가 저장된다.
배열의 초기화
배열을 초기화 하는 방법은 일반 변수와는 다르다.
배열을 초기화하는데에는 여러 가지 방법이 있는데 하나씩 설명하겠다.
우선 다음과 같이 선언하면 arr 배열 안의 모든 값이 0으로 초기화된다.
int arr[5] = {0};
두 번째로 다음과 같이 선언하면 각각의 값이 순서대로 arr 배열 안에 들어가게 된다.
int arr[5] = {0, 10, 20, 30, 40};
세 번째로 모든 값을 초기화하지 않고 초기화를 끝내면 나머지 값은 전부 0으로 초기화된다.
int arr[5] = {0, 10, 20};
따라서 arr[0]에는 0, arr[1]에는 10, arr[2]에는 20, arr[3]에는 0, arr[4]에는 0이 들어가게 된다.
선언과 동시에 초기화를 할 때에는 변수의 개수를 명시하지 않아도 무방하다.
아래 코드를 실행시켜보면 입력한 값이 정상적으로 출력되는 것을 확인할 수 있다.
#include <stdio.h>
int main()
{
int i;
int arr[] = {1, 2, 3, 4, 5};
for (i=0; i<5; i++)
printf("%d ", arr[i]);
return 0;
}
배열의 범위를 초과하여 입력한 경우
배열의 범위를 초과하여 문자열을 입력한 경우 일부 컴파일러에서는 실행이 가능하지만
정해진 메모리의 범위를 초과하였기 때문에 다른 변수와 메모리 공간이 겹치면 버그가 발생할 수도 있다.
#include <stdio.h>
int main ()
{
int arr[5];
arr[7] = 10;
printf("%d", arr[7]);
return 0;
}
예시로 위 코드 또한 오류 발생의 위험이 있기때문에 visual studio에서는 컴파일을 허용하지 않는다.
'C언어 > C언어 문법' 카테고리의 다른 글
[C언어] 포인터 (단일, 다중포인터, 주소값, 참조와 역참조, 포인터배열) (0) | 2024.02.11 |
---|---|
[C언어] 2차원배열, 다차원배열 (0) | 2024.02.11 |
[C언어] 지역변수, 전역변수 (0) | 2024.02.11 |
[C언어] 재귀함수 (0) | 2024.02.10 |
[C언어] 함수의 선언, 호출, 정의 / 반환(return), 매개변수, 전달인자, 파라미터(parameter), 아규먼트(argument) (0) | 2024.02.10 |