배열(Array)은 동일한 데이터 타입을 가진 고정된 개수의 요소들을 모아 놓은 자료 구조입니다. 배열의 요소들은 메모리상에 연속된 공간에 순차적으로 저장됩니다.
배열의 각 요소는 배열 이름과 대괄호 "[]" 안의 인덱스 값을 사용해 접근할 수 있습니다. 예를 들어 a[4], a[3]과 같은 형태로 특정 요소를 읽거나 수정할 수 있습니다.
배열 선언하기
C/C++ 프로그래밍 언어에서 배열은 배열의 데이터 타입과 길이(요소의 개수)를 정의하여 선언합니다. 기본 선언 문법은 다음과 같습니다.
data_type array_name[length];
예를 들어, 길이가 10인 float 타입의 percentage라는 이름의 배열을 선언하려면 다음과 같이 작성합니다.
float percentage[10];
배열 값 초기화하기
C++에서는 배열 값을 초기화하는 여러 가지 방법이 있습니다. 요소를 하나씩 초기화하거나, 하나의 문장으로 모든 값을 한 번에 선언할 수 있습니다.
요소를 하나씩 초기화하는 경우:
percentage[5] = 45.3;
모든 값을 한 번에 선언하는 경우:
float percentage[] = {56.4, 99.0, 12.20, 67.2};초기화된 배열은 메모리에서 다음과 같이 인덱스와 함께 저장됩니다.
| 0 | 1 | 2 | 3 | 4 | 5 |
| 78.06 | 56.78 | 99.20 | 12.22 | 87.66 | 34.44 |
배열 요소 접근하기
배열의 값에 접근하려면 배열 이름 뒤에 대괄호를 붙이고 그 안에 인덱스 값을 넣으면 됩니다. 예를 들면 다음과 같습니다.
float myPercentage = percentage[4];
이 코드는 percentage 배열의 5번째 요소(인덱스 4) 값을 변수에 저장합니다. 참고로 C/C++ 배열의 인덱스는 항상 0부터 시작하므로, 길이가 n인 배열의 마지막 요소 인덱스는 n-1입니다.
예제 1: for 루프로 배열의 모든 값 출력하기
다음은 for 루프를 사용해 배열의 모든 값을 출력하는 프로그램입니다.
#include <iostream>
using namespace std;
int main(){
float percentage[] = {56.4, 99.0, 12.20, 67.2};
cout<<"printing all values of the array :\n";
for(int i = 0; i<4 ; i++){
cout<<"element "<<i+1<<" = "<<percentage[i]<<endl;
}
return 0;
}실행 결과
printing all values of the array : element 1 = 56.4 element 2 = 99 element 3 = 12.2 element 4 = 67.2
배열 전체가 아니라 특정 위치의 값만 출력할 수도 있습니다.
예제 2: 특정 인덱스의 값 출력하기
#include <iostream>
using namespace std;
int main(){
float percentage[4];
percentage[0] = 56.3;
percentage[1] = 99.12;
percentage[2] = 78.32;
percentage[3] = 61.3;
cout<<"3rd element is "<<percentage[2];
return 0;
}실행 결과
3rd element is 78.32
위 예제에서 주목할 점은 3번째 요소를 출력할 때 percentage[2]를 사용했다는 것입니다. 인덱스가 0부터 시작하기 때문입니다.
또한 이미 선언된 배열의 값은 언제든지 다시 할당하여 변경할 수 있습니다.
예제 3: 배열 값 재할당하기
#include <iostream>
using namespace std;
int main(){
float percentage[4];
percentage[0] = 56.3;
percentage[1] = 99.12;
percentage[2] = 78.32;
percentage[3] = 61.3;
cout<<"3rd element is "<<percentage[2];
percentage[2] = 12.22;
cout<<"\nafter change :\n";
cout<<"3rd element is "<<percentage[2];
return 0;
}실행 결과
3rd element is 78.32 after change : 3rd element is 12.22
마무리
배열은 같은 타입의 데이터를 효율적으로 관리할 수 있는 C/C++의 기본적인 자료 구조입니다. 선언 시 크기를 지정하고, 인덱스를 통해 개별 요소에 자유롭게 접근하고 수정할 수 있다는 점만 기억하면 됩니다. 단, 배열 범위를 벗어난 인덱스에 접근하면 정의되지 않은 동작(undefined behavior)이 발생할 수 있으므로 항상 유효한 인덱스 범위(0 ~ 길이-1) 내에서 사용하는 것이 중요합니다.