2021. 8. 6. 22:54ㆍC++
// 포인터(pointer)
1. 정의
- 변수의 메모리 주소를 저장하는 또 다른 변수로 정의
- 변수는 메모리 상의 저장 공간인데,
이것의 위치값을 알면 언제든지 사용할 수 있다.
이 때, 위치값은 메모리 주소를 가리킨다.
- 주소를 사용하기 위해서는 주소를 구하는 주소 연산자,
주소를 담는 포인터, 그리고 포인터로 변수를 사용할 때 필요한
간접참조 연산자를 알아야 한다.
◆ char형 변수가 문자를 저장하고
int 형 변수가 정수를 저장하는 것처럼
포인터는 주소값을 저장하는 데 사용한다.
2. 메모리 주소
- 프로그램이 사용하는 메모리에는 바이트별로 주소값이 할당되어 있다.
- 이 값은 0부터 시작하고 바이트 단위별로 1씩 증가한다.
- 2바이트 이상의 크기를 갖는 변수는 여러 개의 주소(값)에 걸쳐 할당.
3. 주소 연산자(&)
- 주소는 연산을 통해서 직접 구해야 한다.
- 이 떄 사용하는 기호는 &이며, 앰퍼샌드(ampersand)라 읽는다.
<사용 예>
&[변수명] -> 어떤 자료형의 변수 a의 주소값을 지칭
- 주소 연산자는 단항 연산자이며, 변수만을 피연산자로 사용.
4. 포인터와 간접참조 연산자(*)
- 포인터는 주소를 저장하는 변수, 일반 변수와 마찬가지로 선언 후에 사용.
- 변수 앞에 *를 붙이는데, 이것은 역참조 연산자라고도 한다.
- 읽는 방법은 애스터리스크(asterisk operator)라 한다.
- 포인터임을 표시하는 기호
//============================================================
// 포인터 예제
int num_a; // 일반 변수 선언
int *p_num_a; // 포인터 변수 선언
p_num_a = &num_a; // 포인터 변수 p_num_a에 num_a의 주소값 대입
*p_num_a = 10; // 포인터 변수 p_num_a에 10을 대입
cout << endl;
cout << "포인터 p_num_a의 값 : " << *p_num_a << endl;
cout << "변수 num_a의 값 : " << num_a << endl;
'C++' 카테고리의 다른 글
C++ 열거형 데이터 Enum (0) | 2021.08.11 |
---|---|
C++ 셔플 (0) | 2021.08.06 |
C++ 전역 변수, 지역변수 (0) | 2021.08.05 |
C++ 함수 (0) | 2021.08.05 |
C++ String (0) | 2021.08.04 |