전체 글(112)
-
Ch07. 포인터 - 04.동적 할당
1. 할당C++에서 할당(allocation)이란 메모리를 확보해서 어떤 변수나 객체가 사용할 수 있도록 해주는 것을 의미한다즉 이 말은 프로그램이 실행되는 동안 사용할 수 있는 메모리 공간을 만드는 행위를 말하는 것이다. 이 할당의 종류는 자동할당, 정적할당, 동적할당이 존재하는데 간단하게 각각 자동으로 할당을 해주고, 정적으로 할당을 해주고, 동적으로 할당을 해준다는 의미이다. 1) 자동할당(Automatic Allocation)자동할당은 함수 내 지역변수에서만 적용되는 메모리 할당 방식으로 함수가 호출되면 생성되고 함수가 종료되면 자동으로 소멸되는 할당 방식이다.자동할당을 할때에는 메모리의 stack영역에 공간을 할당하게 된다. 자동할당은 변수를 선언할때 자동으로 메모리를 할당하는 방식으로 함수나 ..
2025.04.10 -
Ch07. 포인터 - 03.문자열과의 관계
1. 문자열의 이름과 포인터이전에 배웠던 배열의 경우는 배열의 이름은 배열의 첫번째 요소의 주소값을 반환했었는데 문자열 또한 마찬가지이다.이렇게 사용이 가능하다. 조금 다른 점은 배열의 경우는 std::cout에 넣었을 경우 주소값을 반환했으나 문자열의 경우는 값을 반환한다는 점이다. 이는 std::cout 2. 문자열 리터럴과 포인터이전에 정수 리터럴은 포인터에 직접 넣을 수 없었으나 문자열 리터럴의 경우는 직접 포인터에 넣는 것이 가능하다.물론 그렇게 넣기 위해서는 해당 값이 변경되지 않도록(상수이기 때문에) const를 넣어 sptr을 사용해서 값을 변경할 수 없도록 해줘야 사용이 가능하긴하다. 이게 가능한 이유는 정수 리터럴과 문자열 리터럴의 처리 방식에서 있다. 정수 리터럴의 경우는 int n..
2025.04.09 -
Ch07. 포인터 - 02. 배열과의 관계
포인터와 배열의 관계에 대해서 알아두기에 앞서 먼저 알아둬야할 부분에 대해서 나열해보도록 하자. 0. 배열과 포인터의 관계를 알기 이전에 알아둬야 할점1) 배열의 이름은 배열의 첫 번째 요소의 주소이렇게 arr을 출력했을때의 값과 &을 붙여 arr의 0번째 요소의 주소값을 확인해보면같은 주소를 출력하는 것을 알 수 있는데 이는 배열의 이름(배열의 변수명)만을 사용할때는 배열의 가장 첫요소의 주소값, 배열의 시작지점의 주소값을 전달한다는 것이다 2) 배열과 포인터는 매우 밀접한 관계를 가지며 서로 거의 동일하게 작동하는 경우가 많음뒤에서 배울 내용이지만 포인터와 배열은 아주 비슷하게 작동한다.먼저 포인터에는 배열의 이름을 전달하면서 주소값을 할당하는 것이 가능한데 arr, 배열의 이름을 사용하는 경우 그것..
2025.04.09 -
Ch07. 포인터 - 01. 포인터의 기본
1. 포인터포인터는 다른 변수나 메모리의 주소를 저장하는 변수로 일반 변수의 경우는 값을 저장하나 포인터는 어디에 값이 있는지(메모리 주소)를 저장한다. C++ 프로그램이 실행되면 변수들이 메모리(RAM)에 저장된다.각 변수는 이 메모리 안에서 고유한 주소를 갖게 되는데int a = 450;이렇게 선언된 변수는 RAM의 어딘가에 저장이 되고 그 어딘가를 특정하기 위한 주소값이 생성된다. 포인터는 이렇게 선언된 변수의 위치를 저장한 주소값을 담을 수 있는 변수인 것이다. 2. 포인터의 선언포인터의 기본적인 선언 방식은타입 * 포인터변수명;과 같이 선언하며 실 사용의 예시를 보자면int * ptr;으로 이 포인터의 경우는 int 타입의 변수 혹은 상수의 주소값을 저장할 수 있는 포인터 변수를 선언한 것이다...
2025.04.08 -
Ch06. 복합데이터 - 09. Range-based for
1. Range-based forC++11에서 도입된 문법으로 배열이나 STL 컨테이너의 원소들을 간결하게 순회할 수 있게 해주는 for문이다. 기존의 for문의 경우는 for (int i = 0; i 이렇게 사이즈를 알아야만 사용할 수 있었던 반면 Range-based for 방식의 경우는for (int value : arr) { std::cout 좀더 간결하고 가독성있게 사용이 가능하다. 기본 문법의 형태는for (변수 : 순회 대상) { // 반복문 본문}로 사용하고 실 사용법은std::arr nums = {1, 2, 3, 4, 5};for (int n : nums) { std::cout 이렇게 사용이 가능하다. 물론 일반 arr의 경우도 해당 방법이 사용이 가능하다.int arr..
2025.04.08 -
Ch06. 복합데이터 - 08. std::array
1. std::arraystd::array는 C++11부터 도입된 고정 크기 배열 컨테이너로, C 배열(int arr[5])의 단점을 보완하면서 STL의 장점(반복자, 알고리즘, 범위 검사 등)을 제공하는 템플릿 클래스이다 std::array를 사용한다면 array라는 라이브러리를 include 해줘야한다.#include 2. 기본 문법std-array의 선언은 아래와 같이 사용한다.std::array 변수이름;실 예시는 std::array arr = {1, 2, 3, 4, 5};와 같이 사용이 된다. 일반 배열은 초기화하면서 선언하는 경우엔 배열의 크기를 지정하지 않아도 초기화하는 값의 길이에 맞춰 크기를 맞췄으나 std::array의 경우는 불가능하다.이는 array자체가 내부적으로 크기를 무조건 ..
2025.04.08