CS/C++
[C++] Pointer 와 Reference
sliver__
2022. 11. 17. 00:43
728x90
- C++ 에서 실제 memory address를 주소 연산자인 ampersand sign( & ) 을 사용하여 조회한다.
[Pointer]
- 저장된 memory address 사용할 수 있는 자료형인 pointer를 사용한다.
- pointer는 구체적인 타입을 가리킨다.
- 예시는 아래와 같다.
type *pointer_name;
tpye *pointer_name *pointer_name2, * ... ;
- asterisk ( * ) 가 선언되었을 때만 pointer이다.
- 아래는 왼쪽만 pointer인 예시이다.
type* pointer_name, pointer_name;
- pointer의 size는 사용되는 platform에 의존적이다.
- 포인터의 선언은 아래와 같다.
type *pointer_name1 = &variable_name;
type *pointer_name2 = pointer_name1
type **pointer_name = &pointe_name1;
- pointer를 가리키는 pointer는 asterisk가 하나를 더 붙여 사용한다.
- memory address를 직접 접근하기 위해서는 dereference operator ( * ) 를 사용한다.
- 예시는 아래와 같다.
type *pointer_name = &variable_name1;
type variable_name2 = *pointer_name;
[Reference]
- 포인터와는 다르게 reference는 object는 alias이다.
- reference 예시는 아래와 같다.
type variable_name = value;
type &reference_name = variable_name
- 포인터를 사용하여 세 가지 주요 차이점을 식별할 수 있습니다.
• 일단 초기화되면 참조는 초기 개체에 바인딩된 상태로 유지됩니다. 따라서 다른 개체에 대한 참조를 재할당할 수 없습니다. 참조에 대해 수행되는 모든 작업은 실제로 참조된 개체에 대한 작업입니다.
• 참조를 리바인딩할 가능성이 없으므로 초기화가 필요하다.
• 참조는 항상 메모리에 저장된 변수와 연결되지만 변수가 유효하지 않을 수 있으므로 이 경우 참조를 사용하면 안 됩니다. 이에 대해서는 6과 객체 지향 프로그래밍에서 자세히 살펴보겠습니다. 동일한 개체에 대한 여러 참조를 정의할 수 있습니다. 참조가 개체가 아니므로 다른 참조에 대한 참조를 가질 수 없습니다.
728x90