C++는 복합데이터형을 제공한다.
사용자 정의대로 새로운 데이터형을 만들 수 있다.
복합데이터형 : 기본 정수형과 부동소수점형의 조합
typeName arrayName[arraySize];
short month[12]; // 배열 선언
// short형을 가진 자료를 12개 저장할 수 있는 배열
short month[12] = { 1, 2, 3 }; // 배열 초기화
cout << month[0] << endl; //1이 출력됨
cout << month[1] << endl; // 2가 출력됨
cout << month[3] << endl; // 0이 출력됨
[0]을 인덱스(index)라고 함
- 배열 원소에 대입할 값들을 콤마로 구분하여 중괄호{ }로 묶어 선언한다.
ex) int x[] = { 11, 22, 33 };- 초기화를 선언 이후 나중에 할 수는 없다.
- 배열을 다른 배열에 통째로 대입할 수 없다.
ex) short month[5] = { ... };
short year[12] = { ... };
year = month; //이런 거 안됨!- 초기화 값의 개수를 배열 원소의 갯수보다 모자라게 제공할 수 있다.
ex) short month[12] = { 1, 2, 3 };- 배열을 부분적으로 초기화하면, 나머지 원소들은 자동으로 모두 0으로 설정된다.
- 즉, 명시적으로 첫번째 원소만 0으로 초기화하면, 나머지 원소들은 모두 0으로 초기화된다.
ex) short month[12] = { 1, 2, 3 };
cout << month[3] << endl; // 0이 출력됨- 배열을 초기화할 때 대괄호[ ] 속을 비워두면 컴파일러가 초기화 값의 갯수를 헤아려 배열 원소 갯수를 저장한다.
ex) short month[] = { 1, 2, 3 }; // 자동으로 3이라는 array size가 들어감
: 문자의 열
배열을 이용하여 문자열을 사용할 수 있음
// 방법 1
char a[6] = { 'H','e','l','l','o' }; // null문자('\0')가 포함되어야 해서 [6]으로 써줘야함
cout << a << endl; // Hello 출력
// 방법 2
char a[] = "Hello"; // 큰 따옴표("")는 null문자를 포함한다.
cout << a << endl; // Hello 출력
#include <iostream>
#include <cstring> // cstring 헤더파일에 strlen()함수가 정의 되어있음
using namespace std;
int main() {
//사용자 입력
const int SIZE = 15; // 상수
char name1[SIZE];
char name2[SIZE] = "C++programing";
cout << "안녕하세요! 저는 " << name2;
cout << "입니다! 성함이 어떻게 되시나요?\n";
cin >> name1; // 꺽쇠(>>) 주의!
// cin.get(name1, SIZE);
cout << "음, " << name1 << "씨, 당신의 이름은 ";
cout << strlen(name1) << "자입니다만\n";
cout << sizeof(name1) << "바이트 크기의 배열에 저장되었습니다. \n";
cout << "이름이 " << name1[0] << "자로 시작하는군요.\n";
name2[3] = '\0';
// 처음 세 문자인 C++를 출력하기 위해서 4번째 문자에 null문자를 넣어줌
// cout은 문자열을 출력할 때 null문자까지만 출력을 한다.
cout << "제 이름의 처음 세 문자는 다음과 같습니다: ";
cout << name2 << endl;
return 0;
// [결과]
//안녕하세요!저는 C++programing입니다!성함이 어떻게 되시나요 ?
//Bomin
//음, Bomin씨, 당신의 이름은 5자입니다만
//15바이트 크기의 배열에 저장되었습니다.
//이름이 B자로 시작하는군요.
//제 이름의 처음 세 문자는 다음과 같습니다 : C++
}
strlen()
: 문자열의 길이를 반환하는 함수
( cstring이라는 헤더파일에 정의 되어있음 )
cin
: 사용자가 입력한 것을 오른쪽의 변수에 저장하는 함수
입력받은 값에 공백(화이트 스페이스)이 있으면 공백 앞부분까지만 출력한다.
get, getline
: 공백을 포함해서 사용자의 입력을 받을 수 있는 방법
(get과 getline은 동일한 방식으로 동작함)
sizeof()
: 변수의 byte에 크기를 반환하는 함수
cout에는 <<
cin은 >>
- C++에서 문자열을 다루는 방법 중 하나인 string
- C스타일로 string 객체를 초기화할 수 있다.
- cin을 사용하여 string 객체에 키보드 입력을 저장할 수 있다.
- cout을 사용하여 string 객체를 디스플레이 할 수 있다.
- 배열 표기를 사용하여 string 객체에 저장되어 있는 개별적인 문자들에 접근할 수 있다.
배열을 다른 배열에 통째로 대입할 수 없다.
그러나 string에서는 가능함
char char1[20];
char char2[20] = "jaguar";
string str1;
string str2 = "panda";
//char1 = char2; //불가능
str1 = str2; //가능
cout << str1 << endl; //panda 출력
cout << str1[0] << endl; //p 출력
// 배열처럼 인덱스를 통해서 개별적인 문자에 접근할 수 있다.