728x90
1. 배열과 문자열
#include <iostream>
using namespace std;
int main(){
//c++는 복합데이터형을 제공 : 사용자 정의대로 새로운 데이터형을 만들 수 있음
//복합데이터형 : 기본 정수형과 부동소수점형의 조합
//ex) 배열(array) : 같은 데이터형의 집합
/*배열(array)
* typeName arrayName[arraySize]
* 배열 초기화를 선언 이후 나중에 할 수 없음, 배열을 다른 배열에 통째로 대입할 수 없음
* short month[5] = { ... };
* short year[12] = { ... };
* year = month; 불가능함
* 초기화 값의 개수를 배열 원소의 개수보다 모자라게 제공할 수 있음
* 배열을 부분적으로 초기화하면 나머지 원소는 모두 0으로 설정
* 명시적으로 첫 번째 원소만 0으로 초기화하면, 나머지 원소들은 모두 0으로 초기화됨
* 배열 사이즈를 명시하지 않으면 초기화 시의 원소 개수로 배정됨
* */
short month[12]; //새로운 배열 선언 //month 배열의 원소는 최대 12개, 모두 short형
short month2[12] = {1, 2, 3};
cout << month2[0] << endl; //인덱스 통해 원소 출력
/*
* 문자열: 문자의 열
* char 리스트와 쌍따옴표로 문자열(스트링) 표현 가능
* */
char a[5] = {'H', 'e', 'l', 'l', 'o'};
//이보다 더 효율적으로 문자열 정의하는 방법
char b[] = "Hello"; //쌍따옴표는 명시적으로 null문자를 포함하므로 스트링 표현 가능
cout << b;
}
2-1. 사용자 입력(cin)
#include <iostream>
#include <cstring>
using namespace std;
int main(){
//<cstring>의 헤더 파일에 포함되어 있는 <strlen> : 문자열의 길이를 반환하는 함수
//<sizeof> : 변수의 크기를 반환하는 함수
const int Size = 15;
char name1[Size];
char name2[Size] = "C++programming";
cout << "안녕 나는" <<name2;
cout << "이야~\n";
// cin >> name1; //사용자의 입력을 오른쪽 변수에 저장 //input느낌
//문제는 화이트스페이스를 반영하지 못하고 그 전으로 자름
/*이를 해결하는 것이 get & getline*/
cin.getline(name1, Size); //(변수, 크기) //get도 마찬가지
cout << "음 " << name1 << "씨, 당신의 이름은 ";
cout << strlen(name1) << "자입니다만\n";
cout << sizeof(name1) << "바이트 크기에 저장되었습니다.\n";
cout << "이름이" << name1[0] << "자로 시작하시는군요.\n";
name2[3] = '\0'; //문자열 출력 시 null 문자까지만 출력함
cout << "제 이름의 세 문자는" << name2 << "입니다.";
}
2-2. string
#include <iostream>
using namespace std;
int main(){
//c++에서 문자열을 다루는 방법 중 하나인 'string'
/*
* c스타일로 string 객체를 초기화할 수 있음
* cin을 사용하여 string 객체에 키보드 입력을 저장
* cout을 사용하여 string 객체를 보여줌
* 배열 표기를 사용하여 string객체에 저장된 개별 문자에 접근 가능
* => 문자열과 속성이 비슷한데,
* => string을 통해서는 배열을 다른 배열에 통째로 대입할 수 있음
* => 배열 크기를 미리 지정하지 않아도 됨 */
char char1[20];
char char2[20] = "jauar";
string str1;
string str2 = "panda";
// char1 = char2; //값이 들어가지 않음
str1 = str2; //제대로 대입 됨
cout << str1;
}
3. 구조체(struct)
#include <iostream>
using namespace std;
int main(){
//c++만의 특장점: 사용자의 정의 및 입력대로 원하는 데이터를 만들 수 있음
/*정말 중요한 '구조체' (복합데이터형 중 하나)*/
//배열: 같은 데이터형의 집합
//구조체: '다른 데이터형이 허용되는' 데이터의 집합
//축구선수
struct MyStruct {
string name;
string position;
int height;
int weight;
};
MyStruct A; //A라는 이름의 MyStruct형의 데이터를 만든 것 //약간 class느낌..?
A.name = "Son";
A.position = "Striker";
A.height = 183;
A.weight = 77;
MyStruct B = {
"Min", "defender", 160, 49
};
cout << B.weight << endl;
//구조체 생성 시 중괄호 뒤에 생성할 구조체명을 선언하면
//실제 선언 시 구조체 형식을 전부 명시하지 않아도 됨
//또한, 구조체에 포함된 모든 변수를 선언하지 않아도 됨, 자동으로 0이 됨
struct Ming {
string firstname;
string lastname;
} minji;
minji.firstname = "minji";
minji.lastname = "Jo";
cout << minji.firstname << endl;
//배열을 선언하듯 구조체를 선언할 수 도 있음
Ming minfamily[2] = {
{"jungah", "Han"}, //첫번째 인덱스에 해당하는 정보
{"seokhyeon", "Jo"} //두번째 인덱스에 해당하는 정보
};
cout << minfamily[0].lastname;
}
4. 공용체 (union)
#include <iostream>
using namespace std;
int main(){
//c++에서 지원하는 복합데이터형 중 : 공용체 & 열거체
/*공용체(union): 서로 다른 데이터형을 한 번에 한 가지만 보관할 수 있음 */
union MyUnion{
int intVal;
long longVal;
float floatVal;
};
MyUnion test;
test.intVal = 3;
test.longVal = 33;
test.floatVal = 3.3;
cout << test.intVal << "\n" << test.longVal << "\n" << test.floatVal << endl;
//1079194419
//1079194419
//3.3
//여러 데이터형을 사용할 수 있지만, 동시에 사용은 불가능
// -> 메모리 절약 가능 (운체, 하드웨어 등에 주로 활용됨)
}
5. 열거체(enum)
#include <iostream>
using namespace std;
int main(){
//c++에서 지원하는 복합데이터형 중 : 공용체 & 열거체
/*열거체(enum): 기호 상수(한번 선언된 이후 변경 불가)를 만드는 또다른 방법*/
enum spectrum {red, orange, yellow, green=5};
//1. spectrum을 새로운 데이터형 이름으로 만듦
//2. red, orange, yellow, green의 열거자를 다양한 수를 0~3까지 정수 값을 각각 나타내는 기호 상수로 만듦
//-> 즉 문자로 정수를 사용하게 됨
//-> 사용된 열거자를 상수로 관리함
// 명시적으로 정수 값을 직접 대입할 수 있음 (자동배정되는 값을 사용하지 않으려면.)
spectrum a = orange; //열거체 생성 시, 열거자만 대입할 수 있음
//열거자끼리 직접 산술연산 불가능 (orange+yellow//error)
int b;
b = green; //열거자를 int 변수에 대입하면 산술연산 사용 가능
b = green + 3;
cout << b << endl;
}
728x90
'개발 > c++' 카테고리의 다른 글
[c++ 프로그래밍 입문] 3. 반복문 (0) | 2023.08.22 |
---|---|
[c++ 프로그래밍 입문] 2-3. 포인터 연산 (0) | 2023.08.20 |
[C++ 프로그래밍 입문] 2-2. Complex Data (포인터) (0) | 2023.08.19 |
[C++ 프로그래밍 입문] 1. 데이터 다루기 (1) | 2023.08.19 |
[C++ 프로그래밍 입문] Hello, world! (0) | 2023.08.18 |