연습장
C++ 기초 본문
변수: 변할 수 있는 수
상수: 변할 수 없는 수
정수형: 소수부가 없는 수
실수형: 소수부가 있는 수
음의 정수, 0, 양의 정수
short(2바이트), int(4바이트), long(8바이트), long long(8바이트)
작은 문자열>작은 따옴표('')
큰 문자열> 큰 따옴표("")
문자형 자료형: char
bool형 자료형: 0(false) 혹은 1(true)
데이터형 변환
1. 특정 데이터형의 변수에 다른 데이터형의 값을 대입했을 때
2. 수식에 데이터형을 혼합하여 사용했을 때
3. 함수에 매개변수를 전달할 때
산술연산자
+: 합
-: 차
*: 곱
/: 나누기
>>: 몫
%: 나머지
사용자 입력과 string
strlen 함수: 문자열의 길이를 반환하는 함수 <cstring>
sizeof 함수: 변수의 바이트의 크기를 반환하는 함수
cin >> name1;
cin 함수: 사용자가 입력한 것을 오른쪽(name1)에 저장하는 함수
*>>: 데이터의 흐름
string 함수: 배열에 배열을 통째로 넣을 수 있는 함수, 배열의 사이즈를 선언하지 않아도 됨
★구조체
배열: 같은 데이터형의 집합
구조체: 다른 데이터형이 허용되는 데이터의 집합
struct Mystruct;
{
string name;
string position;
float height;
float weight;
}
;
구조체도 배열로 선언할 수 있음
공용체와 열거체
공용체(union): 서로 다른 데이터형을 한 번에 한가지만 보관할 수 있음 / 구조체와 비슷
union Myunion
{
int intVal;
long longWal;
float floatWal;
};
열거체(enum): 기호 상수를 만드는 것에 대한 또다른 방법
enum spectrum { red, orange, yellow, green, blue, violet, indigo };
1. spectrum을 새로운 데이터형 이름으로 만든다
2. 다양한 수를 0에서부터 7까지 정수 값을 나타내는 기호 상수로 만든다
★★포인터와 메모리 해제
-c++ 객체지향 프로그래밍의 특징: 컴파일 시간이 아닌 코드가 실행돼서 돌아가는 시간에 어떠한 결정을 내릴 수 있음
-배열 생성
재래적 절차적 프로그래밍: 배열의 크기가 미리 결정되어야 함
객체지향 절차적 프로그래밍: 배열의 크기를 실행 시간에 결정할 수 있음
-포인터: 사용할 주소에 이름을 붙인다
포인터의 이름이 주소를 나타냄
간접값 연산자, 간접 참조 연산자 *
int *a; // c 스타일
int* b; // c++ 스타일
int* c, d; //c는 포인터 변수, d는 int형 변수로 선언됨
-new 연산자
어떤 데이터형을 원하는지 알려주면
그에 맞는 알맞은 크기의 메모리 블록을 찾아내어 주소를 리턴함
int* pointer = new int;
&a: a의 주소값
delete 연산자
사용한 메모리를 다시 메모리 폴로 환수
환수된 메모리는 프로그램의 다른 부분이 다시 사용하도록 반환
int* ps = new int;
delete ps;
1. new로 대입하지 않은 메모리는 delete로 해제 불가
2. 같은 메모리 블록을 연달아 두번 연속 delete로 해제 불가
3. new[]로 메모리를 대입할 경우 delete[]로 해제
4. 대괄호를 사용하지 않았다면 delete도 대괄호 사용X
동적 구조체 생성
temp* ps = new temp;
반복문
for (int i=0; i<5; i++) {
cout << i << "n번째입니다." << endl;
}
1. 반복문에 사용할 카운터의 값을 초기화
2. 반복문을 진행할 것인지 '조건 검사'
3. 반복문 몸체를 수행
4. 카운터의 값을 변화
증가, 감소 연산자와 관계표현식
증가 연산자, 감소 연산자
int a= 10;
a++ : 10
++a : 11
둘 다 출력값은 11임
관계표현식
<
<=
>
>=
== : 같다
!= : 같지 않다