본문의 모든 내용은 C, C++을 기준으로 작성되었음.
포인터 변수의 선언 : 자료형 + *(asterisk)의 조합
int a;
int *pa = &a;
(쉽게 표현하면) 포인터 변수 = 주소 전문 변수
pointer = 가리키는 것 ⇒ (뭐를 기반으로?) ⇒ 주소를 토대로
그래서 변수의 주소를 저장하는데 사용하는 것이 포인터 변수
& (앰퍼샌드) + 변수 이름
#include <stdio.h>
int main() {
int a;
printf("address = %p\\n", &a);
return 0;
}
변수가 위치한 메모리의 주소를 %p 서식으로 출력할 수 있음.
#include <stdio.h>
int main() {
int a = 5;
long long address = (long long)&a;
printf("address = %#llx\\n", address);
printf("a = %d\\n", *(int *)address); // *(int *)address == a
return 0;
}
위의 코드는 포인터 변수를 안쓰고도 위와 같이 주소를 long long 변수에 저장한 다음, 그걸 토대로 접근하는 방법.