**배열의 특성

  • 연속된 메모리 공간에 같은 타입의 데이터를 저장하는 구조
  • 배열의 이름은 연속된 메모리 공간의 첫 번째 주소이다
  • 배열은 중괄호 식을 통해 초기화 한다.
  • 배열 선언 시에는 상수를 사용하여 배열 크기를 지정 해야 함
  • 배열 생성 이후에는 인덱스를 지칭하는 변수를 사용 할 수 있다
  • sizeof 연산자에 배열의 이름을 넣으면 전체 배열의 크기를 계산 할 수 있다.

빠른 탐색이 장점(random access : 임의 접근)

한계

  • 개수를 정해 놓고 사용해야 함
  • 맨 앞이나 중간의 메모리를 추가, 삭제하는 것이 불가능 [begin, end) : 반개 구간
int Arr[3]={1,2,3};

Arr : 배열의 이름
[]: 배열 연산자, 인덱스 연산자 : 연속적인 메모리 공간의 사용을 의미
3: 배열의 크기
index: 배열에 저장되는 메모리 번호

블럭 단위 데이터 : 중괄호 식을 이용하여 메모리 값 초기화
cout<<Arr[0]<<endl<<Arr[1]<<endl<<Arr[2]<<endl;
.
.
.
.
<out>
1
2
3

int Arr[5]={1,2,3,4,5}

배열의 크기를 구하는 방법
size() 함수 

cout<<size(Arr)<<endl;
.
.
.
<out>
5


범위 기반 for문
for(int i : Arr){   배열 Arr의 크기만큼 반복
	....
}

**배열과 포인터

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

for(int i : Arr){
	cout<<(*Arr)<<endl;
	Arr++;   - 불가능 / 배열 이름에 연산을 할 수 없음
}


void Test(int arr[]);  -  배열의 이름을 함수 인자로 전달 할 때는 []를 사용한다(int* arr와 같은 의미)

**2차원 배열(다차원 배열)

int Arr[2][3]={
	{1,2,3},
	{4,5,6}    
};

**2차원 배열 포인터

int Arr[2][3];

int (*pArr)[3]=Arr;