본문의 모든 내용은 C, C++을 기준으로 작성되었음.

포인터 구문

포인터 변수 선언

포인터 변수의 선언 : 자료형 + *(asterisk)의 조합

int a;
int *pa = &a;

(쉽게 표현하면) 포인터 변수 = 주소 전문 변수

pointer = 가리키는 것 ⇒ (뭐를 기반으로?) ⇒ 주소를 토대로

그래서 변수의 주소를 저장하는데 사용하는 것이 포인터 변수

변수의 주소 알아내는 연산자

& (앰퍼샌드) + 변수 이름

#include <stdio.h>

int main() {
    int a;
    printf("address = %p\\n", &a);

    return 0;
}

Untitled

변수가 위치한 메모리의 주소를 %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;
}

Untitled

위의 코드는 포인터 변수를 안쓰고도 위와 같이 주소를 long long 변수에 저장한 다음, 그걸 토대로 접근하는 방법.