본문 바로가기

Program Language/c++35

c++ 기초(스택과 힙) 이글은 "전문가를 위한 c++(개정4판)"을 학습한 내용을 직접 실습해보며 정리한 Review용 글입니다. 스택과 힙 c++ 프로그램이 사용하는 메모리는 크게 스택(stack) 영역과 힙(heap) 영역으로 나뉩니다. 물론 세부적으로 코드와 데이터 영역이 추가적으로 있지만 여기서는 다루지 않겠습니다. 스택은 말 뜻처럼 아래에서 위로 데이터를 차곡차곡 쌓아가는 모습입니다.(반대로 꺼낼때도 위에서부터 꺼내야합니다.) 스택은 주로 함수와 관련된 매개 변수와 지역변수가 저장되기 때문에 이를 별도로 스택 프레임(stack frame)이라고 부릅니다. 제일 위에 놓이는 스택 프레임은 현재의 스코프를 표현하며 주로 현재 실행중인 함수를 가리킵니다. 즉 현재 실행 중인 함수에 선언된 변수는 모두 최상단 스택 프레임에 .. 2023. 1. 11.
C++ 기초(이니셜라이저 리스트) 이글은 "전문가를 위한 c++(개정4판)"을 학습한 내용을 직접 실습해보며 정리한 Review용 글입니다. 이니셜라이저 리스트(initializer_list) 함수의 매개변수로 동일 타입의 여러 인수를 받는 함수를 쉽게 작성할 수 있습니다. initializer_list는 템플릿이기 때문에 타입지정은 꺽쇠로 묶어서 지정해야합니다. 다음은 이니셜라이저를 매개변수로 갖는 함수의 예입니다. #include #include using namespace std; int makeSum(initializer_list lst) { int total = 0; for (int value : lst) { total += value; } return total; } int main() { int a = makeSum({ 1,.. 2023. 1. 10.
c++ 기초(반복문(while, do/while, for, 범위 기반 for)) 이글은 "전문가를 위한 c++(개정4판)"을 학습한 내용을 직접 실습해보며 정리한 Review용 글입니다. while 문 while문은 주어진 표현식이 true일 동안 일정한 코드 블록을 계속해서 반복합니다. 예를 들어 "안녕하세요"문장을 다섯번 출력하고 싶다면 다음과 같이 작성합니다. int i = 0; while (i < 5){ //i값이 5보다 작을 동안 반복한다. cout 2023. 1. 9.
C++ 기초(구조적 바인딩) 이글은 "전문가를 위한 c++(개정4판)"을 학습한 내용을 직접 실습해보며 정리한 Review용 글입니다. 구조적 바인딩 c++17부터 구조적 바인딩(structured binding)이란 개념이 도입됐습니다. 여러개의 변수를 선언할 때 배열, 구조체, 페어 또는 튜플의 값으로 초기화할 수 있는 개념입니다. 예를 들어 x, y, z라는 변수를 배열에 담긴 값으로 초기화 하고 싶을 때 'auto [x, y, z] = 배열변수' 와 같이 선언하면 x, y, z에 배열값이 순서대로 할당됩니다. array values = { 1, 2, 3 }; // 배열을 선언한다. auto [x, y, z] = values; // x, y, z를 각각 1, 2, 3으로 초기화 구조적 바인딩 사용 시 반드시 auto 키워드를 .. 2023. 1. 9.
c++ 기초(c++ 스타일 배열) 이글은 "전문가를 위한 c++(개정4판)"을 학습한 내용을 직접 실습해보며 정리한 Review용 글입니다. std::array c++에서는 std::array라는 고정 크기 컨테이너를 제공합니다. 사실 c 스타일 배열 위에 한 꺼풀 덮어 쓴 것에 불과하지만 c 스타일의 배열에 비해 여러가지 장점이 있습니다. 항상 크기를 정확히 알 수 있고, 자동으로 포인터를 캐스팅 하지 않아서 특정한 종류의 버그를 방지할 수 있고, 반복자(이터레이터,iterator)를 사용하면 배열에 원소에 대한 반복문을 쉽게 작성할 수 있습니다. array 컨테이너는 array과 같이 쓸 수 있는데 꺽쇠 안 첫번째 매개변수는 자료형을 나타내고, 두번째 매개변수는 배열의 크기를 나타냅니다. 다음은 array 컨테이너를 사용하는 예를 보.. 2023. 1. 6.
c++ 기초(C 스타일 배열) 이글은 "전문가를 위한 c++(개정4판)"을 학습한 내용을 직접 실습해보며 정리한 Review용 글입니다. 배열(array) 배열은 같은 타입의 값을 나란히 저장하며 각 항목은 배열이 놓인 위치로 접근합니다. 배열을 선언할 때에는 반드시 배열의 크기를 지정해야합니다. 배열의 크기는 변수로 지정할 수 없고 반드시 상수 표현식으로 지정해야합니다. 예를 들어 정수값을 세 개 가진 배열을 선언하려면 다음과 같이 작성합니다. int myArray[3]; myArray[0] = 0; myArray[1] = 0; myArray[2] = 0; 배열을 선언한 뒤 각 원소를 0으로 초기화 했습니다. 배열의 인덱스는 0부터 시작합니다. 따라서 항상 마지막 인덱스는 배열의 크기보다 1이 작습니다. 배열을 초기화할 때 위에서 .. 2023. 1. 5.