- 주소값의 이해
- 데이터의 주소값이란 해당 데이터가 저장된 메모리의 시작 주소를 의미합니다.
- C++에서는 데이터의 시작 값 1바이트가 주소를 의미합니다.
- 포인터란?
- C++에서 포인터(Pointer)란 메모리의 주소값을 저장하는 변수이며, 포인터 변수라고 부릅니다.
int n = 100; // 변수의 선언
int *ptr = &n; // 포인터의 선언
다음 그림은 위의 예제에서 사용된 변수와 포인터가 메모리에서 어떻게 저장되는지를 보여주는 예제입니다.
- 포인터 연산자
- C++에서 포인터와 연관되어 사용되는 연산자는 주소 연산자 (&), 참조 연산자 (*)이 있습니다.
- 주소 연산자 (&)
- 주소 연산자는 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환합니다.
- & 기호는 앰퍼샌드(ampersand)라고 읽으며, 번지 연산자라고도 불립니다.
- 참조 연산자 (*)
- 참조 연산자는 포인터의 이름이나 주소 앞에 사용하여, 포인터에 저장된 주소에 저장되어 있는 값을 반환합니다.
- 포인터의 선언
타입* 포인터이름;
- 타입이란 포인터가 가리키고자 하는 변수의 타입을 명시합니다.
- 포인터 이름은 포인터가 선언된 후에 포인터에 접근하기 위해 사용됩니다.
- 포인터를 선언할 때 참조 연산자(*)의 앞과 뒤에 존재하는 공백은 무시됩니다.
- 포인터의 선언과 초기화
- 포인터를 선언한 후 참조 연산자(*)를 사용하기 전에 포인터는 반드시 초기화되어야 합니다.
- 초기화되지 않은 채로 참조 연산자를 사용하게 되면, 어딘지 알 수 없는 메모리 장소에 값을 저장하게 됩니다.
- 이러한 동작은 매우 위험한 결과를 초래할 수 있으며, 이렇게 발생한 오류는 디버깅하기도 힘듭니다.
- 포인터의 참조
- C++에서 선언된 포인터는 참조 연산자(*)를 사용하여 참조할 수 있습니다.
다음 예제는 포인터의 주소값과 함께 포인터가 가리키고 있는 주소값의 데이터를 참조하는 예제입니다.
int x = 7; // 변수의 선언
int *ptr = &x; // 포인터의 선언
int **pptr = &ptr; // 포인터의 참조
'Program Language > C++ 언어' 카테고리의 다른 글
08. C++ string 클래스와 메소드 (2) | 2024.03.23 |
---|---|
07. C++ 배열과 포인터 - 포인터의 연산과 동적 할당 메모리 (0) | 2023.08.26 |
05. C++ 배열과 포인터 - 1차원 배열과 다차원 배열 (0) | 2023.01.28 |
04. C++ 제어문 - 조건문과 반복문 (0) | 2023.01.03 |
03. C++ 여러가지 연산자 (0) | 2023.01.03 |