[Data Structure] C++ Array : 1

벡터와 스칼라

배열은 벡터의 표현이라 할 수 있다.

int A[5];

  • 한가지의 값이 아닌 동일한 타입의 여러가지 값을 가질 수 있음.

int a;

  • 변수는 하나의 값만 가지는 데이터 구조로 스칼라의 표현이라 할 수 있다.

배열

int a; 라고 선언했을때 (int가 2바이트로 저장된다면,) a의 메모리는 예를 들어 100/101 이런식으로 주솟값을 가질 것이다.

int A[5]; 라고 선언한다면? 100/101 102/103 103/104 ... 이런식으로 순차적으로 공간을 차지하게 된다.

배열 인덱싱

int A[5] = {1,2,3,4,5}; 일때

print("%d",A[2]) 이런식으로 접근이 가능하지만,

print("%d",2[A]) 위와 같은 접근도 같은 결과를 나타내는데 그 이유는 배열 인덱싱을 할때 아래처럼 치환되어 동작하기 때문

print("%d",*(A+2)) 즉 이거와 print("%d",*(2+A)) 이것은 같은 표현이기에 같은 결과를 가지게 된다.

이를 배열 인덱싱이 대칭성을 가지고 있다고 한다.

배열의 선언 방식

int A[5];
int B[5]={1,2,3,4,5};
int C[10]={2,4,6};
int D[5]={0};
int E[]={1,2,3};
  • A는 모든 원소를 가비지값으로 갖는다. (원소값은 선언하지 않았기에)
  • C는 {2,4,6,0,0 ...} 선언한 원소 외에 자리에 가비지값을 갖는다.
  • D는? 0으로 모든 원소를 초기화 해주었기 때문에 가비지값이라 볼 수 없다.