[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으로 모든 원소를 초기화 해주었기 때문에 가비지값이라 볼 수 없다.