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++에서 중요한 개념 중 하나이며,
메모리 관리와 유연한 프로그래밍을 위해 활용됩니다.
그러나 포인터의 사용은 주의가 필요하며,
메모리 누수와 같은 문제를 방지하기 위해 적절한 관리가 필요합니다.
제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀
'Application > 기초' 카테고리의 다른 글
[기초] C++ 객체 지향 프로그래밍 (OOP) (2) | 2024.04.02 |
---|---|
[기초] C++ 파일 입출력 : 기초와 예제 (0) | 2024.04.01 |
[기초] C++ 배열(Array) (0) | 2024.03.22 |
[기초] C++ 변수(Variables)와 상수(Constants) (0) | 2024.03.21 |
[기초] C++ 재귀함수 (Recursive Function) : 팩토리얼 (0) | 2024.03.20 |