Programming Languages(81)
-
고급 포인터 주제
6.5 고급 포인터 주제6.5.1 포인터와 const포인터와 const 키워드의 조합으로 다양한 상황을 표현할 수 있습니다:#include int main() { int value = 42; int another = 100; // 1. 상수 포인터 (포인터 자체가 상수) int* const constPtr = &value; *constPtr = 50; // 값 변경 가능 // constPtr = &another; // 오류: 포인터를 다른 주소로 변경 불가 // 2. 상수에 대한 포인터 (가리키는 값이 상수) const int* ptrToConst = &value; // *ptrToConst = 60; // 오류: 가리키는 값 변경 불가..
2025.03.28 -
참조
6.4 참조6.4.1 참조의 기본 개념참조는 기존 변수의 별칭(alias)으로, 변수와 동일한 메모리 위치를 가리킵니다:#include int main() { int num = 42; int& ref = num; // num에 대한 참조 선언 std::cout 6.4.2 참조와 포인터의 차이점참조와 포인터는 모두 간접 참조 메커니즘을 제공하지만, 몇 가지 중요한 차이점이 있습니다:#include int main() { int num = 42; // 포인터 int* ptr = # // 참조 int& ref = num; std::cout 주요 차이점:참조는 반드시 초기화되어야 하며, null이 될 수 없습니다.참조는 한 번..
2025.03.28 -
동적 메모리 할당
6.3 동적 메모리 할당6.3.1 정적 vs 동적 메모리C++에서 메모리는 크게 두 가지 방식으로 할당됩니다:정적 메모리 할당:컴파일 시간에 크기가 결정됩니다.스택 메모리 또는 전역/정적 메모리에 저장됩니다.변수 수명이 정해져 있습니다(블록이 끝나거나 프로그램이 종료될 때).int num = 42; // 스택 메모리에 할당static int counter = 0; // 정적 메모리에 할당동적 메모리 할당:실행 시간에 크기가 결정됩니다.힙 메모리에 저장됩니다.명시적으로 해제할 때까지 메모리가 유지됩니다.int* dynamicNum = new int; // 힙 메모리에 할당*dynamicNum = 42;delete dynamicNum; // 할당된 메모리 해제6.3.2 n..
2025.03.28 -
포인터의 기본
6.2 포인터의 기본6.2.1 포인터란?포인터는 메모리 주소를 저장하는 변수입니다. 즉, 다른 변수나 데이터를 "가리키는" 변수입니다.#include int main() { int num = 42; // 일반 변수 int* ptr = # // 포인터 변수 (num의 주소를 저장) std::cout 위 코드에서:int* ptr: 정수를 가리키는 포인터 변수 선언&num: num 변수의 주소를 반환 (주소 연산자)*ptr: ptr이 가리키는 주소에 있는 값을 반환 (역참조 연산자)6.2.2 포인터 선언과 초기화포인터는 타입* 변수명 형식으로 선언합니다:int* p1; // 정수 포인터 (권장 스타일)int *p2; // 정수 포인터 (C..
2025.03.28 -
포인터와 참조
포인터와 참조포인터와 참조는 C++에서 메모리를 직접 다루고 효율적인 프로그래밍을 가능하게 하는 강력한 도구입니다. 이 챕터에서는 포인터와 참조의 기본 개념부터 고급 활용법까지 상세히 살펴보겠습니다.6.1 메모리와 주소의 기본 개념6.1.1 컴퓨터 메모리의 이해컴퓨터 메모리는 데이터를 저장하는 일련의 바이트 모음입니다. 각 바이트는 고유한 주소를 가지고 있어 프로그램이 특정 메모리 위치에 접근할 수 있게 합니다.|------|------|------|------|------|------|------|------|| 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 6.1.2 변수와 메모리 주소변수를 선언하면 컴파일러는 해당 변수에 대한 메모리 공간을 할..
2025.03.28 -
챕터5. 실습 문제
5.7 실습 문제문제 1: 은행 계좌 시스템다양한 유형의 은행 계좌를 구현하는 클래스 계층 구조를 설계하세요:#include #include #include #include // 추상 기본 클래스class Account {protected: std::string accountNumber; std::string ownerName; double balance; public: Account(const std::string& number, const std::string& name, double initialBalance) : accountNumber(number), ownerName(name), balance(initialBalance) {} // 가상 소멸..
2025.03.28