C++ 문법(자료형) - 2. 배열

Ui Jin·2021년 9월 13일
0

C++ Grammar

목록 보기
3/13

배열


배열이란?

같은 자료형의 변수 여러개를 묶어 놓은 것.

(이때 우리는 변수 여러개를 묶어 하나의 이름으로 부르는 것 이라고 생각합시다.)


원리

해당 원소 타입의 공간을 정한 개수만큼 붙여서 메모리에 마련해 줍니다.

즉, 위의 경우 a가 선언되면서 [ int | int | int ] 의 크기(4byte * 3)만큼의 공간이 확보됩니다.

이를 이용하면 문자 자료형(char)을 여러개 붙여 문자열을 만드는 것이 가능하겠죠?


정의와 선언

1) 정의

변수와 마찬가지로 따로 정의의 과정이 필요하지 않습니다.

2) 사용

2-1) 선언(생성)

어떤 종류의 변수로 이루어진 배열인지, 몇개로 이루어졌는지에 대한 내용을 지정해 줍니다.

int a[3];
double b[3];
  • 배열의 크기에는 "반드시" "상수"가 전달되어야 합니다.
  • 변수와 마찬가지로 쓰레기 값이 들어가게 되므로 조심합시다.

2-2) 접근

int a[3];
a[1];
  • 배열이름[인덱스]를 통해 배열의 해당 번호에 저장된 값에 접근할 수 있습니다.
  • 인덱스는 0번째, 즉, 위의 경우 a[0]부터 시작합니다. 따라서 a[3]은 존재하지 않습니다. (3개를 만들었으니, a[0], a[1], a[2]까지 존재)
  • 배열의 이름(a)은 a[0]의 주소를 의미합니다.

2-3) 저장

a[2] = 3;

배열의 형태에 맞는 값을 저장해 주도록 합시다.

2-4) 초기화

int a[3] = {11, 22, 33};	// {11, 22, 33}이 저장
int b[3] = {0};			// {0, 0, 0}이 저장

원소중 하나만 초기화 하면 나머지는 자동적으로 0으로 초기화됩니다.

int a[] = {11, 22, 33} 

정의와 동시에 초기화 할 경우 배열의 크기를 지정해 주지 않아도 됩니다.


활용

1) 문자열 만들기

char c[] = "Hello World!";

char d[3];
d[0] = 'a';
d[1] = 'b';
d[2] = 0;

문자 자료형 char를 여러개 붙이면 문자열을 만들 수 있습니다.

2) 배열의 크기

sizeof(c) / sizeof(c[0])

주의점 숙지: sizeof()함수는바이트 단위로 크기를 구하는 함수 입니다.
ex) int a[3]는 4byte * 3, 즉 결과는 12이다.


주의점

1) 배열의 이름은 그 배열의 0번 인덱스의 주소를 의미합니다. 이때 이 값은 "상수"입니다.

2) 1에 의해 배열끼리 대입(복사)하는것은 불가능 합니다.

int a[3];
a = {0, 0, 0};		// a는 a[0]의 주소를 의미하는 상수이므로 대입 불가능

3) 2에의해 초기화는 배열을 정의할때에만 가능합니다.

4) 문자열의 경우 마지막 문자는 반드시 NULL문자('\0')이어야 합니다.

(NULL은 문자열의 끝을 의미합니다. 따라서 '\0'이 없을 경우 그 뒤의 쓰레기 값들이 딸려오게 되기 때문입니다.)

  • char[1] = 'a', 이런식으로 하나하나 문자를 대입할 경우, 마지막에 NULL문자를 입력해 주어야 합니다.
  • "Hello World \n"과 같은 *문자열 상수*의 경우 자동으로 NULL문자가 끝에 첨가되게 되어 있습니다.
    (원래는 '\0'이지만 이 경우는 문자열에 0이 추가되어 있다.)

profile
github로 이전 중... (https://uijinee.github.io/)

0개의 댓글