티스토리 뷰
C++에서 포인터 변수와 참조(reference)는 서로 다른 개념이며, 이 두 가지 방식은 변수에 접근하고 조작하는 방법에서 차이가 있다.
포인터 변수 (Pointer Variables)
1. 정의: 포인터는 변수의 메모리 주소를 저장하는 변수이다. 포인터는 그 자체로 주소를 가지며, 이를 통해 다른 변수의 위치를 가리킬 수 있다.
2. 사용법:
- 선언:
int* ptr;
- 초기화:
ptr = &variable; (변수 `variable`의 주소를 `ptr`에 할당)
3. *참조 (Dereferencing): *ptr 을 사용하면 `ptr`이 가리키는 주소에 있는 실제 데이터에 접근할 수 있다.
4. 특징:
- 포인터는 `nullptr`로 초기화될 수 있으며, 이는 포인터가 어떠한 유효한 메모리 주소도 가리키지 않음을 의미한다.
- 포인터는 산술 연산(예: 포인터 증가)이 가능하며, 이를 통해 배열과 같은 연속된 메모리 블록을 순회가 가능하다.
참조 (References)
1. 정의: 참조는 다른 변수의 별명(alias)으로 사용됩니다. 참조를 선언하면, 이후 참조 이름을 사용하면 원래 변수를 직접 조작하는 것과 같은 효과를 낼 수 있다.
2. 사용법:
- 선언:
int& ref = variable; (변수 `variable`에 대한 참조 `ref` 생성)
3. 특징:
- 참조는 선언과 동시에 초기화되어야 하며, 이후 다른 변수를 참조하도록 변경할 수 없다.
- 참조는 `nullptr` 또는 다른 주소로 초기화될 수 없다.
- 참조는 메모리 주소를 직접 다루지 않으므로, 포인터처럼 산술 연산을 할 수 없다.
차이점 요약
- 초기화: 참조는 선언 시 초기화되어야 하지만, 포인터는 선언 후 언제든지 초기화될 수 있다.
- 유효성: 포인터는 `nullptr`을 가질 수 있지만, 참조는 항상 유효한 객체를 참조해야만 한다.
- 유연성: 포인터는 주소를 변경할 수 있으나, 참조는 초기화 이후 변경할 수 없다.
- 간접 접근: 포인터는 역참조를 통해 간접적으로 값에 접근하지만, 참조는 직접 접근한다..
이러한 차이점들로 인해, 포인터와 참조는 서로 다른 상황에 적합하게 사용되며, 포인터는 더 유연하고 복잡한 메모리 조작에 유용하며, 참조는 보다 안전하고 직관적인 코드 작성에 도움이 된다!
'C++ > 참고' 카테고리의 다른 글
[C++] 문법: 범용 참조 (Args&&... args) (0) | 2023.12.17 |
---|---|
[C++] 문법: 가변 템플릿 인자 (...args) (0) | 2023.12.17 |
[C++] 문법: 참조 변수와 포인터 변수의 사용 목적 차이 (0) | 2023.12.16 |
[C++] 문법: Class member 함수를 const와 非const를 따로 선언하는 이유 (0) | 2023.12.16 |
[C++] 문법: 참조와 역참조 (0) | 2023.12.16 |
- Promise
- 맛집
- 인천 구월동 이탈리안 맛집
- 파니노구스토
- AsyncStorage
- react-native
- redux
- Async
- react
- await
- 이탈리안 레스토랑
- redux-thunk
- 인천 구월동 맛집
- javascript
- 정보보안기사 #실기 #정리
- Total
- Today
- Yesterday