프로그래밍 언어/C++
[C++]배열
claire
2022. 1. 9. 12:14
C/C++에서 배열은 선언 당시 크기가 지정되어야 한다. (고정된 크기의 자료구조)
배열은 일반 변수와 같이 자료형(type)을 먼저 선언하고 배열의 이름을 명시해준 후 대괄호를 사용해서 배열의 크기를 지정해준다. 이때 배열의 크기는 고정된 상수(양의 정수)여야 하며 일반 변수를 지정해 줄 수 없다. 배열 요소의 자료형은 int형을 포함, 모든 기본 자료형(char,double등)을 지원한다. 일반적으로 다음과 같이 선언할 수 있다.
int arr[5];
또한 아래와 같이 크기를 명시해주지 않고 배열의 요소를 모두 정의할 수 있다.
int arr[]={1,2,3,4,5,6,7};
이 경우에는 arr 변수의 크기는 개발자가 직접 명시하지 않아도 자동으로 10으로 지정된다.
또한 배열의 크기를 명시적으로 지정해주고 배열 요소를 모두 지정해주지 않으면 나머지 요소들은 모두 0으로 초기화된다. 아래의 예제들을 살펴보자.
int arr1[5] = { 1, 2, 3 }; // 배열의 요소들은 { 1, 2, 3, 0, 0 } 으로 초기화 됨
int arr2[5]; // 배열의 요소들은 모두 쓰레기값으로 초기화 됨
int arr3[10] = { 0 }; // 배열의 요소들은 모두 0으로 초기화 됨
위의 코드를 보면 알 수 있듯이, 요소들의 값을 하나라도 지정해주면 나머지 지정해주지 않은 요소들은 모두 0으로 초기화되며, 만약 요소의 값을 하나라도 지정해 주지 않으면 모두 쓰레기 값으로 초기화된다.
배열의 이름에는 배열의 시작 주소를 담고 있다.
이 배열의 시작 주소로 여러 가지 활용이 가능하다.
int arr[3];
printf("%d\n", arr); // 배열의 시작 주소를 출력 (100번지)
printf("%d\n", arr + 1); // 배열의 다음 요소의 주소를 출력 (104번지)
배열의 다음 요소의 주소가 4차이가 나는 이유는 배열의 자료형이 int(정수형) 4바이트이기 때문이다.