Application/기초

[기초] C++ 포인터

devsalix 2024. 3. 26. 10:27
728x90

 

C++에서 포인터는 메모리 주소를 저장하는 변수입니다.
이것은 다른 변수 또는 객체를 가리키는데 사용됩니다.
포인터는 C++에서 매우 강력한 기능을 제공하며,
메모리를 효율적으로 활용하고 동적 메모리 할당을 할 수 있도록 해줍니다.

 


 

포인터의 선언 및 초기화

 

포인터를 선언하려면 해당 변수의 데이터 형식 뒤에 '*' 기호를 사용합니다.
예를 들어, 정수를 가리키는 포인터는 다음과 같이 선언될 수 있습니다.

 

int* ptr;

 

포인터를 초기화하려면 다른 변수의 주소를 할당하거나,

동적으로 메모리를 할당하여 초기화할 수 있습니다.

 

int x = 5;
int* ptr = &x; // x의 주소를 포인터에 할당

// 또는 동적 메모리 할당을 통해
int* ptr = new int;

 

포인터의 사용

 

포인터를 사용하여 변수의 값에 접근하거나 변경할 수 있습니다.
역참조 연산자 '*'를 사용하여 해당 포인터가 가리키는 값을 가져올 수 있습니다.

 

int x = 5;
int* ptr = &x; // x의 주소를 포인터에 할당

// 포인터를 사용하여 x의 값을 변경
*ptr = 10;

 

포인터는 배열과도 함께 사용할 수 있습니다.

 

int arr[5] = {1, 2, 3, 4, 5};
int* ptr = arr; // 배열의 첫 번째 요소를 가리키는 포인터

// 포인터를 사용하여 배열의 요소에 접근
cout << *ptr << endl; // arr[0] 출력
cout << *(ptr + 1) << endl; // arr[1] 출력

 

또한, 포인터는 함수 매개변수로 전달될 수 있습니다.

이를 통해 함수 내에서 변수의 값을 변경할 수 있습니다.

 

void modifyValue(int* ptr) {
    *ptr = 100;
}

int main() {
    int x = 5;
    int* ptr = &x;
    modifyValue(ptr);
    cout << x << endl; // 100 출력
    return 0;
}

 

포인터와 메모리 관리

 

포인터는 메모리를 직접 조작할 수 있으므로 주의해야 합니다.
특히 동적 메모리 할당을 사용할 때 메모리 누수와 관련된 문제가 발생할 수 있습니다.
동적으로 할당된 메모리는 반드시 해제되어야 합니다.

 

int* ptr = new int;
// ...
delete ptr; // 동적으로 할당된 메모리 해제

 

또한, 포인터를 사용할 때 NULL 포인터 예외처리를 신경 써야 합니다.
NULL 포인터는 아무것도 가리키지 않는 상태를 나타냅니다.

 

int* ptr = nullptr; // C++11 이후의 방법
if (ptr != nullptr) {
    // 포인터가 유효한 경우에만 사용
}

 


 

포인터는 C++에서 중요한 개념 중 하나이며,
메모리 관리와 유연한 프로그래밍을 위해 활용됩니다.
그러나 포인터의 사용은 주의가 필요하며,
메모리 누수와 같은 문제를 방지하기 위해 적절한 관리가 필요합니다.

 

 


제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

 

 
728x90
반응형