C++ ํ์ ๊ณผ ์์์ ๋ํด ํ์ตํ๊ธฐ (1)
cout - printf์ ๋น์ทํ๋ค.- ํ์ค ์ถ๋ ฅ ์คํธ๋ฆผ ๊ฐ์ฒด๋ก, ์ฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ๋ฐ ์ฌ์ฉ๋จ- cout์ ์คํธ๋ฆผ ์ฐ์ฐ์ cin- scanf์ ๋น์ทํ๋ค.- ํ์ค ์ ๋ ฅ ์คํธ๋ฆผ ๊ฐ์ฒด๋ก, ์ฌ์ฉ์๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ
codebunny99.tistory.com
๋ฐฐ์ด์ด๋?
๋์ผ ํ์ ์ ๋ณ์์ ์งํฉ
์ ์ ๋ฐฉ๋ฒ
type ๋ณ์๋ช [n]
ex) int values[5] = {0, 10, 20, 30, 40};



๋ฐฐ์ด์ ์์ ๊ฐ์ ๋ฐฐ์ด์ ์ ์ํ ๋ ์ด๊ธฐํ ๋ ์ ์๋ค
(1) ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ์ด๊ธฐํ ๋ชฉ๋ก์ ํฌ๊ธฐ๋ก ๊ฒฐ์ ๋๋ค
- ์ฆ int intArray2[] = {1,2,3,4}; ๋ int intArray2[4] = {1,2,3,4}; ์ ๋์ผํ๋ค
(2) ์ง์ ๋์ง ์์ ์์์ ์ด๊ธฐ๊ฐ์ 0์ผ๋ก ๊ฒฐ์ ๋๋ค
- ์ฆ intArray3[3] = {1,2}; ๋ผ๊ณ ํ๋ค๋ฉด int intArray3[3] = {1, 2, 0} ์ผ๋ก ๋น์ด์๋ ์์๋ 0์ผ๋ก ์ด๊ธฐ๊ฐ์ด ๊ฒฐ์ ๋๋ค.
(3) ๋ฌธ์์ ๋ฐฐ์ด์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ด์ฉํ์ฌ ์ด๊ธฐํ๋๋ค.
- char strArray1[] = "a string" ; ๋ char strArray1[] = {'a', ' ', 's', 't', 'r', 'i', 'g', 0}; ์ ๋์ผํ๋ค
(4) ํด๋์ค ๊ฐ์ฒด์ ๋ฐฐ์ด๋ ๊ฐ๋ฅํ๋ค
- string names[5] = {string("Kim"), string("Park")} ; ๋ string names[5] = {'Kim', 'Park', 0, 0, 0} ;
- ์ด๋ฅผ ์คํ์ํค๋ฉด names ๋ฐฐ์ด์ {"Kim", "Park", "", "", ""}๋ก ์ด๊ธฐํ๋๋ค
2์ฐจ์ ๋ฐฐ์ด
- ๋ค๋ฅธ ๋ฐฐ์ด์ ์์๋ก ๊ฐ์ง๋ค
์ ์๋ฐฉ๋ฒ
type ๋ณ์๋ช [ํ][์ด]
ex) int values[3][5];


- ์ด์ ๊ฐ์๋งํผ ์ ํํด์ผ ํ๋ฏ๋ก 5๋ ์์์ด๋ฉฐ, ์ด์ ๊ฐ์๋งํผ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค.
๋์ 1์ฐจ์ ๋ฐฐ์ด
- new์ delete๋ฅผ ์ด์ฉํ์ฌ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ ์ ์๋ ๋์ ๋ฐฐ์ด์ ์ ์
- heap(ํ) ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ ๋ถ์ฌ
#include <iostream>
using namespace std ;
int main() {
โโโโcout << "1์ฐจ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์
๋ ฅํ์์ค." << endl;
โโโโint intSize;
โโโโcin >> intSize;
โโโโ// new๋ก ์
๋ ฅ๋ ํฌ๊ธฐ๋งํผ์ int๋ฅผ ํ ๋น
โโโโint* const intArray = new int[intSize];
โโโโfor (int i = 0 ; i < intSize ; i++)
โโโโโcin >> intArray[i];
โโโโdelete[] intArray; //delete๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐํ
}
ํฌ์ธํฐ์ ๋์ ๋ฐฐ์ด
- stack ๋ฉ๋ชจ๋ฆฌ์์ heap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌ์ธํฐํ๋ค
- heap ๋ฉ๋ชจ๋ฆฌ์๋ ํฌ์ธํฐ๊ฐ ์กด์ฌํ๋ฉฐ, stack ๋ฉ๋ชจ๋ฆฌ์๋ ๋ฐฐ์ด์ ๊ฐ์ด ์๋ค.

๋์ 2์ฐจ์ ๋ฐฐ์ด
- stack ๋ฉ๋ชจ๋ฆฌ์์ heap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌ์ธํฐํ๋ค
- heap ๋ฉ๋ชจ๋ฆฌ์๋ ํฌ์ธํฐ๊ฐ ์กด์ฌํ๋ฉฐ, stack ๋ฉ๋ชจ๋ฆฌ์๋ ๋ฐฐ์ด์ ๊ฐ( ex) intArrayA, intArrayB )์ด ์๋ค.
#include <iostream>
using namespace std ;
int main() {
โโโโcout << "ํ๋ ฌ์ ํฌ๊ธฐ๋ฅผ ์
๋ ฅํ์์ค." << endl;
โโโโint rowSize, columnSize;
โโโโcin >> rowSize >> columnSize;
โโโโ
โโโโcout << "ํ๋ ฌA [" << rowSize << " X " << columnSize << "]์ ๊ฐ์ ์
๋ ฅํ์์ค. \n";
โโโโint ** const intArrayA =new int*[rowSize];
โโโโfor (int i = 0 ; i < rowSize ; i++){
โโโโโโโโintArrayA[i] =new int[columnSize];
โโโโโโโโfor (int j = 0 ; j < columnSize ; j++) cin >> intArrayA[i][j];
โโโโ}
โโโโcout << endl;
โโโโcout << "ํ๋ ฌB [" << rowSize << " X " << columnSize << "]์ ๊ฐ์ ์
๋ ฅํ์์ค. \n";
โโโโint ** const intArrayB =new int*[rowSize];
โโโโfor (int i = 0 ; i < rowSize ; i++){
โโโโโโโโintArrayB[i] =new int[columnSize];
โโโโโโโโfor (int j = ; j < columnSize ; j++) cin >> intArrayB[i][j];
โโโโ}
โcout << endl << "ํ๋ ฌA + B๋" << endl;
โโโโfor (int i = 0 ; i < rowSize ; i++){
โโโโโโโโfor (int j = 0 ; j < columnSize ; j++) {
โโโโโโโโโโโโconst int a = intArrayA[i][j];
โโโโโโโโโโโโconst int b = intArrayB[i][j];
โโโโโโโโโโโโcout << a << " + " << b << " = " << a+b << '\t' ;
โโโโโโโโ}
โโโโโโโโcout << endl;
โโโโ}
โโโโ
โโโโ//intArrayA, intArrayB๋ฅผ deleteํด ์ฃผ์ด์ผ ํจ
โโโโfor (int i = 0 ; i < rowSize ; i++) {
โโโโโdelete [] intArrayA[i];
โโโโโโโโdelete [] intArrayB[i];
โโโโ}
โโโโ
โโโโdelete [] intArrayA ;
โโโโdelete [] intArrayB ;
}
๋์ดํ(enum) = ์ด๊ฑฐํ
- ๋ช๊ฐ์ง ํ์ ๋ ๊ฐ์ ๊ฐ์ง๋ ํ์
- ๊ฐ์ง ์ ์๋ ๋ชจ๋ ๊ฐ๋ค์ ๋์ดํจ์ผ๋ก์จ ์ ์
ex)
enum Grade { FRESH = 1, SOPHOMORE, JUNIOR, SENIOR };
- FRESH = 1์ ๋์ดํ ์์ FRESH์ ๊ฐ 1์ ๋ช ์์ ์ผ๋ก ํ ๋นํ๋ค.
- ์ดํ์ ๋์ค๋ ๋์ดํ ์์๋ค์ ๋ณ๋๋ก ๊ฐ์ ์ง์ ํ์ง ์์ผ๋ฉด, ๋ฐ๋ก ์ด์ ๊ฐ๋ณด๋ค 1์ฉ ์ฆ๊ฐํ ๊ฐ์ ์๋์ผ๋ก ๊ฐ์ง๊ฒ ๋จ๋ฐ๋ผ์, SOPHOMORE๋ 2, JUNIOR๋ 3, SENIOR๋ 4
- ๋ง์ฝ FRESH์ = 1์ ์ง์ ํ์ง ์๊ณ ๊ทธ๋ฅ FRESH๋ผ๊ณ ๋ง ํ๋ค๋ฉด, C++์์ ๋์ดํ์ ์ฒซ ๋ฒ์งธ ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก 0์ ๊ฐ์ ๊ฐ์ง๋ค. ๊ทธ ํ๋ก ๋์ค๋ ์์๋ค์ ๊ทธ ์์ ๊ฐ์ 1์ฉ ๋ํด์ ธ ํ ๋น๋๋ค. ex) 0, 1, 2, 3
Grade curGrade = FRESH;
- ๋์ดํ ํ์ ์ด๋ฆ์ int, float ๋ฑ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ณ์๋ฅผ ์ ์ํ ๋ ํ์ ์ด๋ฆ์ผ๋ก์ ์ฌ์ฉ
- curGrade๋ ๋ณ์นญ(๋ณ์ ์ด๋ฆ)์ ๋ถ์ฌํ ๊ฒ์ด๋ค.
๋์ดํ์ ํ๋ณํ
- ๋์ดํ ํ์ ์ ๋ฆฌํฐ๋ด์ ๋ด๋ถ์ ์ผ๋ก int ํ์ ์ผ๋ก ์ฒ๋ฆฌํจ
(1) ๋์ดํ -> int ํ์ ์ผ๋ก ๋ฌต์์ ์ผ๋ก ํ๋ณํ

(2) int๊ฐ -> ๋์ดํ ํ์ ์ผ๋ก ๋ช ์์ ์ผ๋ก ํ๋ณํ

๋์ดํ์ ํ์ฉ
- ๊ฐ๋ ์ฑ์ ์ํด

- ๊ฒฐํจ๋ฐฉ์ง๋ฅผ ์ํด

๊ตฌ์กฐ์ฒด(struct)
- ๊ธฐ์กด ํ์ ์ ๋ณ์๋ค์ ์กฐํฉ์ผ๋ก์ ์๋ก์ด ํ์ ์ ์ ์
C++์์์ ๊ตฌ์กฐ์ฒด(struct)๋ C์ธ์ด์์์ ๊ตฌ์กฐ์ฒด์ ์ ์ฌํ์ง๋ง, ๋ช ๊ฐ์ง ์ค์ํ ์ฐจ์ด์ ์ด ์๋ค.
์ด ์ฐจ์ด์ ๋ค์ C++์ด ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก ๋ฐ์ ํ๋ฉด์ ๊ตฌ์กฐ์ฒด์ ๊ธฐ๋ฅ์ด ํ์ฅ๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์๋ค.
1. ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ์ ๊ธฐ๋ณธ ์ ๊ทผ ์ ํ์
- C์ธ์ด: C์์ ๊ตฌ์กฐ์ฒด์ ๋ฉค๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต๊ฐ(public)
- C++: C++์์๋ ๊ตฌ์กฐ์ฒด์ ๋ฉค๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณต๊ฐ(public) ๊ทธ๋ฌ๋, C++์์๋ ํด๋์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๊ทผ ์ง์ ์(public, private, protected)๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
2. ๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ์ฐจ์ด
- C์ธ์ด: C์์๋ ๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ๊ฐ๋ ์ด ์๋ค. ๊ตฌ์กฐ์ฒด๋ ๋จ์ํ ์ฌ๋ฌ ๋ฐ์ดํฐ ํ์ ์ ๋ฌถ๋ ๋ฐ ์ฌ์ฉ
- C++: C++์์๋ ๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ๊ธฐ๋ฅ์ด ๊ฑฐ์ ๋์ผํ๋ค. ๋์ ์ ์ผํ ์ฐจ์ด์ ์ ๊ธฐ๋ณธ ์ ๊ทผ ์ ํ์์
๋๋ค.
- ๊ตฌ์กฐ์ฒด์ ๋ฉค๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก public
- ํด๋์ค์ ๋ฉค๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก private
struct MyStruct {
โโโโint x; // public by default
};
class MyClass {
โโโโint x; // private by default
};
3. ๋ฉค๋ฒ ํจ์์ ์ ์
- C์ธ์ด: ๊ตฌ์กฐ์ฒด ๋ด๋ถ์ ํจ์๋ฅผ ์ ์ํ ์ ์๋ค. ๊ตฌ์กฐ์ฒด๋ ๋ฐ์ดํฐ๋ง์ ํฌํจ
- C++: ๊ตฌ์กฐ์ฒด ๋ด๋ถ์ ๋ฉค๋ฒ ํจ์๋ฅผ ์ ์ํ ์ ์๋ค. ์ฌ์ค์ ํด๋์ค์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๋ค
struct MyStruct {
โโโโint x;
โโโโvoid print() { // ๊ตฌ์กฐ์ฒด ๋ด์ ๋ฉค๋ฒ ํจ์ ์ ์ ๊ฐ๋ฅ
โโโโโโโโstd::cout << "x = " << x << std::endl;
โโโโ}
};
4. ์์๊ณผ ๋คํ์ฑ
- C์ธ์ด: C์์๋ ๊ตฌ์กฐ์ฒด๊ฐ ์์์ด๋ ๋คํ์ฑ์ ์ง์ํ์ง ์๋๋ค.
- C++: C++์์๋ ๊ตฌ์กฐ์ฒด๋ ํด๋์ค์ฒ๋ผ ์์์ ์ง์ํ๋ฉฐ, ๋คํ์ฑ์ ๊ตฌํํ ์ ์๋ค. ์ฆ, ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์๋ค.
struct Base {
โโโโint x;
};
struct Derived : public Base {
โโโโint y;
};
5. ์์ฑ์์ ์๋ฉธ์
- C์ธ์ด: C์์๋ ๊ตฌ์กฐ์ฒด์ ์์ฑ์๋ ์๋ฉธ์๋ฅผ ์ ์ํ ์ ์๋ค. ๊ตฌ์กฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ด๊ธฐํํ๊ฑฐ๋ ํด์ ํ๋ ์์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ผ ํจ
- C++: C++์์๋ ๊ตฌ์กฐ์ฒด์๋ ์์ฑ์์ ์๋ฉธ์๋ฅผ ์ ์ํ ์ ์๋ค. C++์ ๊ตฌ์กฐ์ฒด๋ ํด๋์ค์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์์ฑ์์ ์๋ฉธ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
struct MyStruct {
โโโโint x;
โโโโMyStruct(int val) : x(val) {} // ์์ฑ์
โโโโ~MyStruct() {} // ์๋ฉธ์
};
6. ํ ํ๋ฆฟ ์ง์
- C์ธ์ด: C์์๋ ๊ตฌ์กฐ์ฒด์ ํ ํ๋ฆฟ ๊ธฐ๋ฅ์ด ์๋ค.
- C++: C++์์๋ ๊ตฌ์กฐ์ฒด๋ ํ ํ๋ฆฟ์ ์ง์ํ์ฌ, ์ ๋ค๋ฆญ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ค.
template <typename T>
struct MyStruct {
โโโโT value;
};
7. ๊ธฐํ ์ฐจ์ด์
- ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ: C++์์๋ ๊ตฌ์กฐ์ฒด์์๋ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ํ ์ ์๋ค. ์ด๋ C์์ ์ง์๋์ง ์๋ ๊ธฐ๋ฅ
- ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: C++์ ๊ตฌ์กฐ์ฒด๋ C++์ ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ(์: new ๋ฐ delete)๊ณผ ์ ํตํฉ๋๋ค. C์์๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ด ๊ตฌ์กฐ์ฒด์ ํตํฉ๋์ง ์์์ผ๋ฉฐ, ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ ํด์ ํด์ผ ํ๋ค.
๊ณต์ฉ์ฒด(Union : ์ ๋์จ)
- ๋์ผํ ๊ณต๊ฐ์ ๊ณต์ ํ๋ ์ฌ๋ฌ๊ฐ์ ๋ณ์๋ฅผ ์ ์
ex)

๊ตฌ์กฐ์ฒด์ ๊ณต์ฉ์ฒด์ ์ฐจ์ด

- ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ด ๋ฌ๋ผ์ง๋ค.
- ๊ทธ๋ฌ๋ ๋์ผํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ๊ณต์ฉ์ฒด์ ๊ฐ ํ๋์ ๊ฐ์ ์๋ก ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก ์ฃผ์ํ๋ค.
์ฌ์ฉ ์ฃผ์ ์์)

typedef
- ๊ธฐ์กด์ ํ์ ๊ณผ ๋์ผํ ์ญํ ์ ํ๋ ์๋ก์ด ํ์ ๋ณ์นญ์ ์ ์ํ๋ค.
typedef unsigned int Age;
typedef double celsius t ;
typedef double fahrenheit_t;
- ์๋กญ๊ฒ ์ ์๋ ํ์ ์ด๋ฆ์ ๋ณ์์ ์ ์, ํจ์์ ๋งค๊ฐ๋ณ์ ํ์ ๋ฑ์ผ๋ก ๋์ผํ๊ฒ ์ฌ์ฉ
Age me = 20;
celsius_t getCelsius(fahrenheit_t f);