# 포인터
다른 변수의 메모리 주소를 저장하는 변수로,
`&`는 주소 연산자(Address-of Operator)이고,
`*`는 역참조 연산자(Dereference Operator)입니다.
1. & (주소 연산자: Address-of Operator):
- `&`는 변수의 주소를 가져오는 역할을 합니다.
- 변수 앞에 `&`를 붙여 사용합니다.
- 예시:
int num = 42;
int *ptr = #
위의 예시에서 `&num`은 변수 `num`의 주소를 가져옵니다. 이를 포인터 변수 `ptr`에 저장할 수 있습니다.
(주소는 0x7fff5fbff82c 이런 형식임)
2. * (역참조 연산자: Dereference Operator):
- `*`는 포인터가 가리키는 주소에 저장된 값을 참조합니다.
- 포인터 변수 앞에 `*`를 붙여 사용합니다.
- 예시:
int num = 42;
int *ptr = #
int value = *ptr;
위의 예시에서 `*ptr`은 포인터 변수 `ptr`이 가리키는 주소에 저장된 값을 가져옵니다. 이를 변수 `value`에 저장할 수 있습니다.
간단히 말하면, `&`는 변수의 주소를 가져오는 것이고, `*`는 포인터가 가리키는 주소에 저장된 값을 가져오는 것입니다. 이 두 연산자를 함께 사용하면 변수의 주소를 저장하고, 그 주소를 통해 값을 참조하는 포인터를 다룰 수 있습니다.
예시를 통해 설명하겠습니다.
int main() {
int num = 42;
int *ptr = # // 변수 num의 주소를 포인터 ptr에 저장
printf("num의 값: %d\n", num); // num의 값 출력
>42
printf("num의 주소: %p\n", &num); // num의 주소 출력
>0x7fff5fbff82c
printf("ptr이 가리키는 값: %d\n", *ptr); // ptr이 가리키는 주소에 저장된 값 출력
>42
printf("ptr의 값(주소): %p\n", ptr); // ptr의 값(주소) 출력
>0x7fff5fbff82c
return 0;
}
위의 예시에서 `&num`은 `num`의 주소를 가져오고, `*ptr`은 `ptr`이 가리키는 주소에 저장된 값을 가져옵니다. 이를 출력하여 확인하면 `num`의 값과 주소, `ptr`이 가리키는 값과 주소를 확인할 수 있습니다.
'Programming > etc' 카테고리의 다른 글
웹앱(Web app)에 관하여 (0) | 2023.08.03 |
---|---|
RESTful API(Representational State Transfer) (0) | 2023.08.03 |
오버로딩(Overloading)과 오버라이딩(Overriding)과 다형성(Polymorphism) (0) | 2023.07.13 |
Boolean 타입 변수 활용 (0) | 2023.07.13 |
도커(docker)와 쿠버네티스(kubernetes)비교 (0) | 2023.07.11 |