지식아일랜드

코딩 기초 31편 _ C++ 배열의 포인터 연산, 메모리의 동적 할당(new, delete 연산자) 본문

C++ 기초

코딩 기초 31편 _ C++ 배열의 포인터 연산, 메모리의 동적 할당(new, delete 연산자)

모르는게 없는 지식인 2023. 7. 8. 19:32
반응형

안녕하세요?

지식아일랜드의 모르는 게 없는 지식인입니다.

 

오늘 알려드릴 C++ 코딩 주제는 바로 배열의 포인터 연산,

그리고 new 연산자와 delete 연산자를 활용한 메모리의 동적 할당입니다.

 

 

배열의 포인터 연산

 

먼저, 배열의 포인터 연산에 대해 예제 코드와 함께 설명드리겠습니다.

 

#include <iostream>
using namespace std;

int main() {
     int arr[5] = {10, 20, 30, 40, 50};   //  배열 선언 및 초기화

     int* ptr = arr;   //  포인터에 배열의 첫 번째 요소의 주소를 할당

     cout << "배열의 요소와 포인터 연산을 통한 접근:\n";
     for (int i = 0; i < 5; i++) {
           cout << "arr[" << i << "]: " << arr[i] << endl;
           cout << "ptr + " << i << ": " << *(ptr + i) << endl;
      }

      return 0;
}

 

위 코드는 배열 내의 요소에 포인터 연산을 사용하여 접근하는 방법을 보여줍니다.

 

주요한 점은 'ptr'이라는 포인터를 선언하고, 배열의 첫 번째 요소인 'arr'의 주소를 할당하는 것입니다.

 

포인터 'ptr'을 사용하여 배열에 접근하고 값을 출력합니다.

 

프로그램을 실행하면, 배열의 요소와 포인터 연산을 통한 접근이 출력됩니다.

 

각 반복에서 i번째 배열 요소인 arr[i]와 ptr + i의 값을 출력합니다.

 

ptr + i는 포인터 ptr의 현재 주소에서 i만큼의 오프셋을 더한 주소를 나타냅니다.

 

*(ptr + i)는 해당 주소에 있는 값을 역참조하여 가져옵니다.

 

이 코드를 통해 포인터 연산을 사용하여 배열의 요소에 접근하는 방법을 이해할 수 있습니다.

 

포인터를 사용하여 배열 요소에 접근하고 조작하는 것은 메모리 효율적인 코드를 작성하는 데 도움이 됩니다.

 

포인터 연산을 사용하면 배열의 요소에 순차적으로 접근하거나 특정 위치로 이동하여 접근할 수 있습니다.

 

 

메모리의 동적 할당(dynamic allocation)

 

다음으로는 메모리의 동적 할당에 대하여 new 연산자와 delete 연산자를 이용한 예제 코드를 통해 설명드리겠습니다.

 

#include <isotream>
using namespace std;

int main() {
     int size;
     cout << "할당할 배열의 크기를 입력하세요: ";
     cin >> size;

     int* arr = new int[size];   //  동적 할당

     cout << "배열에 값을 입력하세요:\n";
     for (int i = 0; i < suze; i++) {
           cout << "arr[" << i << "]: ";
           cin >> arr[i];
     }

     cout << "입력한 배열의 값은 다음과 같습니다:\n";
     for (int i = 0; i < size; i++) {
           cout << "arr[" << i << "]: " << arr[i] << endl;
     }

     delete[] arr;   //  동적 할당 해제
     return 0;
}

 

위 코드는 사용자로부터 배열의 크기를 입력받은 후,

그 크기에 맞는 배열을 동적으로 할당하고 값을 입력받은 다음, 할당한 배열의 값을 출력합니다.

 

주요한 점은 new 및 delete[] 연산자입니다.

 

new 연산자를 사용하여 int 형식의 배열을 동적으로 할당합니다.

 

delete[] 연산자를 사용하여 동적 할당한 메모리를 해제합니다.

 

프로그램을 실행하면 먼저 사용자로부터 배열의 크기를 입력하라는 메시지가 표시됩니다.

 

사용자는 양수인 정수를 입력하여 배열의 크기를 지정합니다.

 

다음으로, 배열에 값을 입력하기 위해 "배열에 값을 입력하세요:"라는 메시지가 표시됩니다.

 

사용자는 배열의 각 요소에 값을 입력합니다.

 

마지막으로 입력한 배열의 값이 "입력한 배열의 값은 다음과 같습니다:"라는 메시지와 함께 출력됩니다.

 

마지막으로 동적으로 할당한 배열을 해제하기 위해 delete[] 연산자를 사용합니다.

 

이 코드를 통해 동적 할당의 개념을 이해할 수 있습니다.

 

동적 할당은 실행 중에 필요한 메모리를 할당하고 사용한 후에는 해제하여 메모리를 반환하는 프로세스입니다.

 

이를 통해 유연한 메모리 관리를 할 수 있습니다.

 

 

어떠셨나요?

 

오늘은 C++ 코딩 배열의 포인터 연산과 메모리의 동적 할당에 대해 설명드렸는데요.

 

차근차근 예제와 함께 학습하셔서 코딩 마스터가 되시길 바라겠습니다.

 

그럼 저는 다음 포스팅 C언어 스타일의 문자열로 돌아오겠습니다.

 

감사합니다!

반응형
Comments