본문 바로가기
프로그래밍 언어/C언어

[C언어 공부하기] 12. 배열 - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 6. 30.
728x90
반응형

 

배열은 여러 개의 변수를 한 번에 저장할 수 있는 자료형입니다.

배열의 각 공간에는 번호가 붙여져 여러 개의 변수를 사용하는 것과 유사하지만 변수보다 더욱 유용합니다.

배열을 선언하는 방법은 변수를 선언하는 방법과 비슷합니다.

데이터 타입 배열명[배열의 크기] 의 구조로 배열을 선언할 수 있습니다.

이렇게 선언된 배열을 초기화하지 않으면 배열의 각 원소에는 쓰레기 값이 들어가게 되므로 초기화를 해줘야 합니다.

배열을 초기화해 주는 방법은 { } 안에 배열 원소로 저장할 값을 콤마(,)로 구분하여 나열해 주면 됩니다.

여기서 배열의 원소로 들어갈 수 있는 값은 처음 배열을 선언할 때 지정해 준 배열의 데이터 타입과 일치해야 합니다.

 

배열을 초기화해 줄 때 지정해 준 배열의 크기보다 원소의 개수가 적으면 초기화하지 않은 배열의 각 공간은 0으로 초기화됩니다. 만약 배열의 크기를 지정해주지 않고 비워뒀을 경우 반드시 초기화를 해줘야 하며 초기화 해준 원소의 개수로 배열의 크기가 지정됩니다.

 

배열 안에 들어가는 변수 하나하나가 개별적인 변수이며, 각 변수의 번호를 인덱스라고 합니다.

인덱스는 배열에서 각 변수의 위치라고 볼 수 있으며, 인덱스는 0번부터 시작하고 배열의 크기 전까지 번호를 가집니다.

배열을 출력할 때는 for 문과 인덱스를 활용하여 원소 하나하나 출력할 수 있습니다.

배열의 크기를 지정할 때 변수를 사용하여 지정할 수도 있습니다.

배열의 크기는 고정되어 있어야 하기 때문에 상수로 지정되어야 하는데 상수를 변수로 지정해 두는 것을 매크로 상수라고 합니다.

 

매크로 상수는 main 함수를 정의하기 전에 정의하여 변수처럼 사용할 수 있습니다.

매크로 상수는 말 그대로 상수이므로 배열의 크기를 정의할 때 사용할 수 있는 것입니다.

매크로 상수를 사용하여 여러 값들을 정의했다면 해당 매크로 상수의 값을 변환할 경우 매크로 상수를 사용한 모든 값이 바뀝니다. 하지만 매크로 상수는 프로그램 실행 도중에 값을 변경할 수 없습니다.

 

배열의 크기를 지정하지 않고 배열을 초기화했을 경우, 배열의 원소 개수가 몇 개인지 한눈에 확인하기 힘들 때도 있습니다. 이럴 경우 sizeof() 함수를 사용하면 배열의 크기를 쉽게 알 수 있습니다.

 

두 배열을 복사할 때는 단순히 대입 연산자로 복사할 수 없습니다.

x = y처럼 복사를 한다면 배열의 주소를 대입하는 것이므로 복사가 되지 않습니다.

한 배열을 다른 배열로 복사할 때는 배열의 원소를 하나하나 전부 복사해줘야 합니다.

 

두 배열을 비교할 때도 마친가지로 단순하게 비교연산자를 사용하여 비교하는 것이 아니라 배열의 원소 하나하나를 모두 비교하여 모두 일치해야만 두 배열이 일치하는 것으로 볼 수 있습니다.

x == y처럼 비교할 수 없고 x[0] == y[0] 과 같이 비교해야 합니다.

반응형

배열에서 원하는 값을 찾고자 하는 것이 배열의 탐색이라고 합니다.

배열의 탐색은 배열의 원소 처음부터 끝까지 찾을 값과 비교하며 일치하는지 판단하면 됩니다.

찾는 값이 배열에 여러 개 존재할 경우, 모두 찾아 출력할 수도 있고 아니면 가장 먼저 나온 값만 출력할 수도 있습니다.

 

배열의 원소들을 정렬할 수도 있습니다. 선택 정렬을 통해 배열의 원소를 정렬할 수 있습니다.

배열을 오름차순으로, 내림차순으로 정렬할 수 있습니다.

배열의 정렬은 처음부터 마지막 원소까지 다음 원소와 비교하고 서로의 위치를 바꾸는 방법으로 진행됩니다.

 

배열은 1차원뿐만 아니라 다차원으로 생성할 수 있습니다.

2차원 배열 데이터 타입 배열명[행의 크기][열의 크기] 구조로 생성할 수 있습니다.

2차원 배열을 초기화할 때는 각 행의 원소를 { }로 묶어서 나타내고 이를 다시 { }로 묶어서 나타내주면 됩니다.

배열을 초기화한다면 행의 크기를 생략될 수 있습니다. 하지만 어떤 경우에도 열의 크기가 생략될 수는 없습니다!

2차원 배열을 출력할 때도 for 문을 사용하면 되는데 1차원 배열의 출력과는 다르게 중첩 for 문을 사용하여 출력합니다.

728x90
반응형