C++과 같은 Managed Language(메모리를 직접 다루는 언어)를 안한지 너무 오래되서, C++에 대한 특성과 C++의 포인터, 구조체, 클래스 , I/O ,함수 5가지 정도는 가볍게 정리할 예정이다. ( JS, Python 같은 동적언어를 하다보니 , 어느새 머리속에서 C++과 같은 언어는 멀어져버렸다.)
알고리즘은 기본적인 입출력 문제를 풀 것 같다. Third Party API로 최근에 C++ Header 파일을 분석할 일도 있었고 해서 Remind를 빠르게 할 예정이다.
(정리해놓고 나중에 두고두고 봐야지)
C++언어의 자료형에는 정수형, 실수형 2가지 밖에 없다.
정수형
Char - 문자(Character)를 표시할 때 사용됩니다.(정수형입니다. ASCII코드 값인걸로 압니다)
bool - True,False를 나타낼 때 쓰는 값입니다. 0/1로 True,false를 나타내기 때문에 정수형입니다. 하지만, Boolean값은 true,false의 "의미"를 나타내기 때문에 참/거짓을 나타내는 값
이라면 bool 자료형을 쓰는게 좋을거 같습니다. (0/1로 참/거짓을 나타내는게 절대 틀린건 아닙니다!)
숫자
short - 2byte의 범위의 정수를 나타냅니다.
int - (integer)4byte로 정수를 나타냅니다.
long - 4byte로 정수를 나타냅니다. 운영체제에 따라, 8byte일 수 있습니다.
__int64 - 8byte 정수를 나타냅니다.
실수형
float - 4byte크기의 실수를 나타냅니다.
double - 8byte크기의 실수를 나타냅니다.
long double -8byte 이상크기의 실수를 나타냅니다.
헤더파일
include <iostream>
(표준 입출력 헤더파일)
include <bits/stdc++.h>
(교육용 입출력 헤더 , 표준 입출력과 STL, Algorithm들이 모여있다.
cin
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
cin >> a;
cout << a << '\n';
return 0;
}
안녕하세요 바보
라고 입력했지만, 개행문자 앞까지인 안녕하세요
까지 입력이 되었습니다.
scanf
%d
는 int
, %lf
는 double
, %c
는 char
타입을 받습니다. #include <bits/stdc++.h>
using namespace std;
int main()
{
char a[20];
scanf("%s", &a);
printf("%s \n", a);
return 0;
}
같이
사용해야할 상황이 오는데, 이때 입력버퍼를 한번 비워줄 필요가 있습니다. 왜냐하면, cin은 개행문자를 끝으로 입력받아오는데, 버퍼에 그대로 남아있기 때문입니다. #include <bits/stdc++.h>
using namespace std;
int main()
{
int T;
string s;
cin >> T;
getline(cin, s);
return 0;
}
C++은 입력버퍼를 자체적으로 갖고있습니다. 입력버퍼를 사용하는 이유는 효율적이기 때문입니다.
이 버퍼를 비우는 과정을 Flush
라고 합니다.
cout
cout << 출력할 것 <<'\n'
와 같이 사용합니다. 여러개를 출력하고 싶다면, cout << a << b << c ...와 같이 뒤에 <<
기호를 연달아 사용하면 됩니다.~~자릿수까지 출력
이라는 문제가 가끔 있는데, 그때는 precision
함수를 이용해줍니다.#include <bits/stdc++.h>
using namespace std;
int main(){
int a = 5;
double b = 3.141592;
string str1 = "Hello";
cout << a << b << str1 ;
return 0;
}
printf
#include<bits/stdc++.h>
using namespace std;
int main(){
int a = 5;
double b =5.123;
char words[20] = "Hello World!";
printf("정수: %d 실수:%lf 문자열:%s",a,b,&words)
return 0;
}
#define
을 통해, 상수나 매크로를 정의 할 수 있습니다. 가독성을 높여주고, 코드를 깔끔하게 짤 수 있습니다. 특히, 매크로는 코드의 양을 줄일 수 있는 좋은 기능 중 하나입니다.
#include<bits/stdc++.h>
using namespace std;
#define loop(x,n) for(int x=0; x < n ; x++)
#define Author "Shark"
int main(){
cout<< Author <<'\n';
int sum=0;
loop(i,10){
sum +=i;
}
cout<< sum << "\n" ;
return 0;
}
typedef는 타입의 이름을 새롭게 짓는 별칭 기능입니다(Alias 기능).
사용자 정의한 타입(클래스, 구조체를 더 의미있는 이름으로 지어줄 수 있습니다.