C++ 포인터

2021. 8. 6. 22:54C++

728x90

// 포인터(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;

728x90

'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