Chapter 6. 배열(Array)과 문자열(String)
1. 배열
- 같은 형의 데이터들로 이루어진 집합으로 자료 구조의 하나
- 같은 타입의 변수가 여러 개 필요한 경우 사용
- 같은 데이터형의 변수를 메모리에 연속적으로 할당하고 같은 이름으로 사용하는 방법을 제공
- 배열의 선언
데이터형 배열명[크기]; |
- 배열 선언 시 필요 요소
· 배령의 데이터 형 : 배열 또한 일종의 변수이기 때문에 데이터 형이 필요하다.
· 배열의 이름 : 배열 또한 일종의 변수이기 때문에 변수 명처럼 배열의 이름도 필요하다.
· 배열의 크기(길이) : 배열의 원소의 개수에 해당한다.
※ 배열의 크기는 반드시 0보다 큰 정수형 상수로만 지정할 수 있다.
또한 리터럴 상수가 아닌 변수 또는 매크로 상수에 의해서 크기를 지정할 수도 있다.
(단, 변수와 매크로상수도 0보다 큰 정수형의 값을 가지고 있어야 한다.)
- 배열의 사용 및 접근
· 배열을 사용할 때는 배열의 원소 번호를 호출해서 각 배열의 원소를 사용하는데 이때 사용하는 원소 번호를 인덱스(index) 또는 첨자라고 한다.
· 배열의 인덱스는 항상 0부터 시작해 하나씩 증가하기 때문에 배열 인덱스 끝 번호는 크기-1이 된다.
· 배열이 메모리에서 할당 될 때 모든 원소가 연달아 할당되기 때문에 주소 값은 모두 연속되어 있다.
· 배열을 사용할 때 배열의 인덱스가 유효 범위를 넘어가지 않게 주의해야한다.
- 배열의 초기화
방법 1
|
방법 2 int arr[크기] = {1,2,3,………,6,7}; int arr[] = {1,2,3,………,6,7}; char str[14] = "Good morning"; |
· 배열의 초기화 방법
◦ 방법 1
▹ 배열의 원소 하나하나에 값을 초기화한다..
▹ 값을 대입하는 방법은 변수의 값을 초기화하는 방법과 같다.
◦ 방법 2
▹ 배열에 집합 전체를 중괄호({})로 묶어 초기화한다.
▹ 값을 대입할 때는 중괄호({}) 안에 값을 대입하고 각각의 값 사이에는 콤마(,)로 구분점을 만들어준다.
▹ 중괄호({})를 초기화하는 목적으로 사용하는 경우 반드시 초기값 하나 이상을 지정해야 하며, 배열의 크기보다 값이 많아서는 안 된다.
▹ 배열의 크기는 원칙적으로 생략이 불가능하지만 배열 선언과 동시에 초기화를 한다면 배열의 크기를 생략할 수 있다.
▹ 문자열의 경우에는 중괄호({}) 대신 큰따옴표("")를 사용한다.
(자세한 내용은 2. 참고)
- 다차원 배열
· 배열의 원소에 접근하기 위해 인덱스를 둘 이상 사용하는 경우 사용하는 배열
· 이차원 배열의 선언
데이터형 배열명[크기1][크기2] |
◦ 일반적으로 이차원배열을 이해할 때 행렬 또는 표(테이블)를 사용해 크기1을 행, 크기2를 열로 인용한다.
◦ 행과 열은 논리적인 표현일 뿐 메모리상에서는 1차원 배열과 같은 방식으로 할당된다.
· 이차원 배열의 초기화
방법 1 arr[0][0] = 1; |
방법 2 int arr[크기1][크기2] = {{1,2,3,…},{1,2,3,…},……}; int arr[][] = {{1,2,3,…},{1,2,3,…},……}; |
◦ 방법 1
▹ 배열의 원소 하나하나에 값을 초기화한다..
▹ 값을 대입하는 방법은 변수의 값을 초기화하는 방법과 같다.
◦ 방법 2
▹ 배열에 집합 전체를 중괄호({})로 묶어 초기화하는데 크기1의 크기에 따라 중괄호({}) 내의 중괄호({})의 수가 결정된다.
▹ 값을 대입할 때 중괄호({})를 집합을 구분하기위해 각각의 중괄호({}) 사이에는 콤마(,)로 구분점을 만들어준다.
▹ 이차원배열의 크기1과 크기2는 둘 중 앞의 인덱스만 생략가능하고 삼차원배열부터는 생략이 불가능하다.
- 배열의 메모리 할당
일차원 배열 메모리 할당
|
이차원 배열 메모리 할당 |
2. 문자열
- 문자 배열
· 연속된 문자들의 모임으로 char형 배열이기 때문에 문자 배열이라고 한다..
· 반드시 문자열의 끝에는 문자열의 끝을 표시하는 널(\0)문자를 함께 보관해야 한다.
· 문자 배열의 선언
char 배열명[문자열크기+1]; |
◦ 문자열은 문자 배열이라고도 하지만 문자열 변수라고도 한다.
◦ 문자열은 문자 데이터형의 배열이기 때문에 데이터형은 char이다.
◦ 문자열을 선언할 때는 사용하려는 문자열의 길이+1만큼 배열의 크기를 지정해 문자열 끝에는 항상 널(null) 문자를 저장해야한다.
◦ 문자열에서 널 문자는 문자열의 끝을 표시하는 문자이다.
※ 널(null) 문자 : 특정 속성에 해당되는 값이 없음을 나타내며 0이나 공백 문자와는 다르다.
· 문자 배열의 초기화
방법 1 |
방법 2
|
방법 3
|
◦ 방법1
▹ 배열에서처럼 문자배열의 원소 하나하나를 초기화하는 방법
▹ 단, 원소 하나하나를 초기화 한다면 맨 끝 원소는 반드시 널문자(\0)를 지정해줘야 하며 지정하지 않을 시 쓰레기 값을 갖는다.
◦ 방법2
▹ 배열에서처럼 문자배열의 값을 한 번에 초기화하는 방법으로 중괄호를 사용한다.
▹ 데이터형이 문자형이기 때문에 작은따옴표('')를 사용해 초기화해야 한다.
▹ 단, 방법1과 같이 맨 끝원소는 반드시 널문자(\0)를 지정해줘야 한다.
◦ 방법3
▹ 문자열을 초기화할 때는 중괄호({}) 대신 큰따옴표("")를 이용해 초기화를 할 수 있다.
▹ 큰따옴표("")를 이용한 초기화에서는 문자 배열의 크기가 아무리 커도 큰따옴표("")안의 문자 이외에 배열원소는 모두 널 문자로 채워진다.
- 문자 배열의 메모리 할당
|
'C Langauage' 카테고리의 다른 글
Chapter 8. 포인터(Pointer) (0) | 2015.08.05 |
---|---|
Chapter 7. 함수(Function) (0) | 2015.08.05 |
Chapter 5. 제어문 (0) | 2015.08.05 |
Chapter 4. 연산자(Operator) (0) | 2015.08.05 |
Chapter 3. 자료의 입출력 (0) | 2015.08.05 |