C++ 63

C++ 포인터 응용

C의 포인터는 다른 변수의 메모리 주소를 저장하는 데 사용되는 변수다. 포인터를 사용하면 메모리를 효율적으로 관리할 수 있으므로 프로그램을 최적화할 수 있다. 이 글에서는 C의 포인터의 주요 응용 분야에 대해 기술한다. C 프로그래밍 언어에서 포인터의 주요 응용은 다음과 같다.1. Passing Arguments by Reference 참조에 의해 인수를 전달하는 것은 두 가지 목적을 수행한다.① 다른 함수의 변수 수정 목적 아래 예시는 두 숫자를 교환하여 포인터를 사용하는 방법을 보여준다:// C program to demonstrate that we can change // local values of one function in another using pointers. #include  void ..

C++ 2024.05.17

C++ 댕글링, 보이드, 널, 와이드 포인터

C에서 프로그래밍 포인터는 메모리 주소를 조작하거나 일부 변수 또는 메모리 위치의 주소를 저장하는 데 사용된다. 그러나 포인터와 관련된 특정 상황과 특성은 메모리 안전 및 프로그램 동작 측면에서 어려워진다. 여기에는 Dangling(할당 해제된 메모리를 가리킬 때), Void(특정 유형이 없는 일부 데이터 위치를 가리킬 때), Null(유효한 주소의 부재) 및 Wild(초기화되지 않은) 포인터가 포함된다.1. 댕글링 포인터삭제(또는 해제)된 메모리 위치를 가리키는 포인터를 댕글링 포인터(dangling pointer)라고 한다. 이러한 상황은 프로그램에서 예기치 않은 행동을 초래할 수 있으며, C 프로그램에서도 버그의 원인이 될 수 있다.포인터가 댕글링 포인터 역할을 하는 것에는 세 가지 방법이 존재한다..

C++ 2024.05.16

C++ 포인터 산술(Pointer Arithmetic)

1. 포인터 산술의 개념C++에서 포인터 변수는 다른 변수, 함수, 구조 및 다른 포인터의 주소를 저장하는 데 사용되며, 이러한 포인터를 사용하여 해당 주소에 저장된 데이터에 액세스하고 조작할 수 있다. 포인터 산술은 말 그대로, 포인터에 대해 산술 연산을 수행하는 것을 의미한다. 포인터에 대해 유효한 연산을 의미하는 것으로, C++의 포인터에 유효한 산술 연산은 다음과 같다: ① 증가 및 감소 포인터 ② 포인터에 상수 더하기③ 포인터에서 상수 빼기 ④ 동일한 유형의 두 포인터 빼기 ⑤ 포인터 비교2. 증가 및 감소 포인터포인터를 늘리거나 줄이면, 메모리에 있는 다음 또는 이전 데이터의 주소를 참조하게 된다. 이 과정은 숫자 데이터를 늘리거나 줄이는 것과는 분명 다르다.예를 들어, 숫자 데이터를 늘리거나..

C++ 2024.05.01

C++ 포인터(Pointers) 총정리

1. 포인터의 개념포인터는 주소를 상징적으로 표현하는 것이다. 포인터는 프로그램이 참조에 의한 호출을 시뮬레이션하고, 동적 데이터 구조를 만들고 조작할 수 있게 해준다. 배열이나 다른 데이터 구조의 요소 위에서 반복하는 것이 포인터의 주요 사용 중 하나라 할 수 있겠다.작업 중인 변수의 주소는 동일한 데이터 유형(int 또는 string 등)을 가리키는 포인터 변수에 할당된다. 포인터는 잘만 사용한다면, 코드를 줄이고 성능을 향상시킨다. 포인터는 문자열, 트리, 배열, 구조 및 함수를 검색하는 데 사용된다.포인터를 사용하면 함수에서 여러 값을 반환할 수도 있다. 또한, 컴퓨터 메모리의 메모리 위치에 액세스할 수도 있다. 결국 모든 것은 사용하기 나름이다. 구문:datatype *var_name;  int..

C++ 2024.04.29

C++ 포인터와 레퍼런스 정리

1. 포인터와 레퍼런스C++ 포인터와 레퍼런스는 모두 프로그램의 메모리, 메모리 주소 및 데이터를 처리하는 데 사용되는 메커니즘이다. 포인터는 다른 변수의 메모리 주소를 저장하는 데 사용되지만, 레퍼런스는 이미 존재하는 변수의 별칭(alias)을 만드는 데 사용된다. C++의 포인터는 주소를 상징적으로 표현한 것이다. 이들은 프로그램이 레퍼런스에 의한 호출을 시뮬레이션하고, 동적 데이터 구조를 만들고 조작할 수 있도록 한다. 포인터는 변수의 주소나 메모리 위치를 저장한다. 구문: datatype *var_name;  예를 들어 int * ptr; 에서 ptr은 int 데이터를 유지하는 주소를 가리킨다. 예시 프로그램을 통해 포인터를 이해해 보도록 한다:// C++ program to demonstrate..

C++ 2024.04.29

C++ 람다식(Lambda expression) 총정리

1. 람다식의 개념이름이 필요 없는 짧은 코드 조각에 사용할 수 있는 인라인 함수를 허용하기 위해 Lambda expression이 도입됐다. 가장 간단한 형태로 람다 식을 다음과 같이 정의할 수 있다. [ capture clause ] (parameters) -> return-type   {       definition of method    }  일반적으로 람다 식의 리턴 타입은 컴파일러 자체에서 평가하므로 명시적으로 지정할 필요는 없다. 또한 the -> return-type 부분은 무시할 수 있다. 그러나 조건문과 같이 복잡한 경우에는 컴파일러가 리턴 타입을 결정할 수 없으며, 명시적인 지정이 필요하다.표준 함수를 사용한 람다 식의 다양한 용도는 다음과 같다:// C++ program to d..

C++ 2024.04.25

C++사용자 정의 예외

우리는 클래스에 예외 처리를 사용할 수도 있다. 심지어 사용자 정의 클래스 유형의 예외를 던질 수도 있다. try 블록 내에 demo 클래스 유형의 예외를 던지는 경우 작성할 수 있다. throw demo();단일 클래스로 예외 처리를 구현하는 프로그램 예시:#include  using namespace std; class demo { }; int main() {      try {           throw demo();      }      catch (demo d) {         cout "Caught exception of demo class \n";      } } 출력:Caught exception of demo class 위 프로그램에서는 빈 클래스를 선언했다. try 블록에서 우리는..

C++ 2024.04.25

C++ 스택 풀기(Stack Unwinding)

1. 스택 풀기의 개념Stack Unwinding은 실행 시간에 함수 호출 스택에서 함수 항목을 제거하는 프로세스다. 로컬 개체는 구성된 역순으로 파괴된다.스택 풀기는 일반적으로 예외 처리와 관련이 있다. C++에서 예외가 발생하면, 함수 호출 스택에서 예외 처리기를 선형으로 검색하고, 예외 처리기가 있는 함수 이전의 모든 항목을 함수 호출 스택에서 제거한다. 따라서 예외 처리는 동일한 함수(예외가 던져지는 곳)에서 예외를 처리하지 않으면, 스택 풀기를 포함하는 것이다. 기본적으로 스택 풀기는 런타임에 구성된 모든 자동 개체에 대해 (예외가 던져질 때마다) 파괴자를 호출하는 프로세스다.예시:// CPP Program to demonstrate Stack Unwinding  #include   usin..

C++ 2024.04.24

C++ 클래스를 이용한 예외 처리

이번 글에서 우리는 클래스를 이용한 예외 처리를 알아보도록 한다. Problem Statement① 데이터 멤버 a와 b를 갖는 클래스 Number를 만든다.② 반복 함수를 작성하여 두 숫자의 GCD(Greatest Common Divisor)를 찾는다.③ 주어진 수가 소수인지 아닌지 확인하기 위해 반복 함수를 작성한다. 만약 참이라고 판명나면, 클래스 MyPrimeException에 예외를 부여한다. ④ 자신만의 MyPrimeException 클래스를 정의한다. Solution① 두 개의 데이터 멤버가 있는 Number라는 이름의 클래스를 a와 b로 정의한다. ② 두 개의 멤버 함수를 다음과 같이 정의한다.   ⑴ int gcd(): 두 숫자의 HCF(Highest Common Factor)..

C++ 2024.04.24

C++ 예외 처리(Exception Handling) 총정리

1. 예외 처리(Exception Handling)의 개념 C++에서 '예외'는 프로그램이 실행하는 동안 발생하는 런타임 이상이나 비정상적인 상태다. 이러한 예외를 처리하는 과정을 예외 처리라고 한다. 예외 처리 메커니즘을 사용하면 예외가 발생한 프로그램의 한 부분의 제어를 코드의 다른 부분으로 전달할 수 있다. 2. 예외의 유형 예외에는 2가지 유형이 존재한다. ① 동기: 입력 데이터의 오류로 인해 문제가 발생하거나, 프로그램이 현재 작업 중인 데이터 유형을 처리할 수 있는 장비가 없을 때 발생하는 예외다. ex) 숫자를 0으로 나누는 것 ② 비동기: 디스크 고장, 키보드 인터럽트 등 프로그램이 통제할 수 없는 예외다. 3. 예외 처리를 위한 내장 기능 C++는 예외 처리를 위한 내장 기능을 제공한다...

C++ 2024.04.23
728x90