C++ 68

C++ 새로운 연산자를 사용해 2D 배열을 동적 선언하는 방법

C++에서 다차원 배열은 배열의 배열로서 간단한 단어로 표현된다. 다차원 배열의 데이터는 표 형식으로 저장된다. 아래는 N차원 배열을 선언하는 일반적인 형태다. 구문:data_type array_name[size1][size2]….[sizeN];data_type: Type of data to be stored in the array.  Here data_type is valid C/C++ data type array_name: Name of the array size1, size2, …, sizeN: Sizes of the dimensions 즉, 2차원 배열은 단일 차원 배열의 배열이라 할 수 있다. 2D 배열의 구문:data_type array_name[x][y]; data_type: Type of ..

C++ 2024.05.28

C++ 다차원 배열 총정리

1. 다차원 배열의 개념배열은 연속적인 메모리 위치에 보유된 동일한 데이터 유형의 항목의 컬렉션을 저장하는 데 사용되는 데이터 구조의 한 유형이다. 배열은 배열이 성장할 수 있는 방향의 수에 따라 1차원 또는 다차원일 수 있다. 여기서는 2차원 배열과  3차원 배열과 같은 다차원 배열을 깊게 학습하도록 한다. 구문:datatype arrayName[size1][size2]...[sizeN];  예시:Two dimensional array: int two_d[2][4]; Three dimensional array: int three_d[2][4][8];2. 다차원 배열의 크기배열의 크기는 데이터 유형의 크기에 배열에 저장할 수 있는 요소의 총 수를 곱한 것과 같다. 우리는 다차원 배열의 각 차원의 크기를 ..

C++ 2024.05.26

C++ 배열(Arrays) 총정리

1. 배열의 개념C++에서 배열은 유사한 데이터 유형의 여러 값을 연속적인 메모리 위치에 저장하는 데 사용되는 데이터 구조다. 예를 들어, 4명 또는 5명의 학생의 표시를 저장해야 한다면 5개의 다른 변수를 생성하여 쉽게 저장할 수 있지만, 100명의 학생의 표시를 저장하거나 500명의 학생이라고 한다면 같은 방식으로 진행하려 할까? 그 숫자의 변수를 생성하고 관리하는 것은 매우 어려워진다. 그런데 배열은 필요한 크기의 배열을 만들기만 하면 쉽게 수행할 수 있다.2. 배열의 속성① 배열은 연속적인 메모리 위치에 저장된 동일한 데이터 유형의 데이터 모음이다.② 배열의 인덱싱은 0부터 시작한다. 첫 번째 요소는 0번째 인덱스에 저장되고, 두 번째 요소는 1번째 인덱스에 저장되는 것을 의미한다. ③ 배열의 요..

C++ 2024.05.22

C++ 레퍼런스(참조, Reference) 총정리

1. 레퍼런스의 개념변수가 참조로 선언되면 기존 변수의 대체 명칭이 된다. 이때 선언문에 &를 넣어 변수를 참조로 선언할 수 있다. 또한, 우리는 기준 변수를 다른 변수의 기준이 될 수 있는 변수의 한 종류로 정의할 수 있다. &는 변수 또는 메모리의 주소를 나타내는 데 사용된다. 기준 변수와 관련된 변수는 이름을 사용하거나 그와 관련된 기준 변수를 사용할 수 있다. 구문:data_type &ref = variable;  예시:// C++ Program to demonstrate  // use of references #include  using namespace std; int main() {      int x = 10;      // ref is a reference to x.      int& r..

C++ 2024.05.18

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
728x90