Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- vscode
- 알고리즘
- 배열
- Python
- Data Science
- Pre-processing
- assignment operator
- Deep Learning
- raw data
- C++
- 반복문
- 오블완
- 파이썬
- predictive analysis
- programming
- pass by reference
- baekjoon
- string
- 문자열
- Object Oriented Programming
- 티스토리챌린지
- 함수
- function
- Class
- pointer
- const
- 백준
- OOP
- array
- 포인터
Archives
- Today
- Total
Channi Studies
[C++] 역참조 (Dereferencing a Pointer) 본문
역참조 (Dereferencing)
모두 알다시피 포인터는 다른 데이터의 주솟값을 저장해놓는 변수입니다.
우리도 주소를 통해서 원하는 위치에 방문합니다.
C++에서도 동일합니다.
당연히 포인터의 값으로 원하는 데이터의 주소를 안다면,
그 주소를 통해 해당 위치에 있는 데이터에 접근할 수도 있겠죠?
이것을 우리는 역참조 (Dereferencing) 라고 부릅니다.
그리고 그 방법은 매우 간단합니다.
포인터를 선언할 때, 변수와 다른 부분이 어떤 것이였는지 기억이 나시나요?
변수와는 다르게 포인터의 이름 앞에 asterisk(*) 마크를 붙였습니다.
포인터가 가르키는 값(주소)를 따라가서 있는 위치에 저장된 값을 조회할 때도 동일합니다.
변수명 앞에 *를 붙이기만 하면 됩니다.
선언할 때와 동일한 syntax여서 조금은 헷갈릴 수도 있겠지만,
주어진 코드를 전체적으로 이해하고 나면 괜찮을 것 같습니다.
다음 예시로 살펴보겠습니다.
#include <iostream>
using namespace std;
int main() {
int score{100};
int *score_ptr{&score};
cout << *score_ptr << endl; // 100
*score_ptr = 200;
cout << *score_ptr << endl; // 200
cout << score << endl; // 200
}
정수 변수 score과 score의 주소를 저장하는 score_ptr 포인터가 있습니다.
*score_ptr를 출력하니 score_ptr가 가르키는 score의 값인 100이 출력됩니다.
*score_ptr 값을 변경하니 score의 값이 직접적으로 변경되어 200이 됩니다.
마지막 줄에서 이 변화가 확인됩니다.
다른 예시를 보겠습니다.
#include <iostream>
using namespace std;
int main() {
double high_temp{100.5};
double low_temp{30.1};
double *temp_ptr{&high_temp};
cout << *temp_ptr << endl; // 100.5
temp_ptr = &low_temp;
cout << *temp_ptr << endl; // 30.1
}
한개의 포인터로 주솟값을 변경하며 출력한 예시입니다.
'C++ > 포인터 (Pointers)' 카테고리의 다른 글
[C++] 배열과 포인터의 관계 (Relationship Between Arrays and Pointers) (1) | 2023.12.19 |
---|---|
[C++] 동적 메모리 할당 (Dynamic Memory Allocation) (1) | 2023.12.19 |
[C++] 데이터의 주소에 접근하는 방법 (1) | 2023.12.19 |
[C++] 포인터의 선언 (Declaring Pointers) (0) | 2023.12.19 |
[C++] 포인터(Pointer)란? (0) | 2023.12.19 |