CS/C++

배열과 포인터의 공통점과 차이점

PIYA 2022. 6. 28.

배열과 포인터

배열과 포인터는 표현에서 비슷한 점이 많다.
배열 표현식과 포인터 표현식을 interchangably 쓸 수 있다.

#include<cstdio>
int main() {
    int val = 10;
    int* ptr;
    int arr[3] = {1,2,3};

    ptr = &val;

    // arr = &val;
    // 얘는 안된다. arr변수는 '배열'로 선언되었기 때문.
    // 한번 세팅하면 주소값을 바꿀 수 없는 const pointer와 비슷한 느낌?

    printf("ptr value: %x\n", ptr); // 주소값
    printf("ptr pointer: %d\n\n", *ptr); // 10

    printf("ptr[0]: %d\n", ptr[0]); // 포인터를 배열처럼
    printf("*(arr+1): %d\n", *(arr+1)); // 배열을 포인터처럼. arr이 int형이므로 +1하면 4바이트 주소를 옮겨서 값을 출력한다.
}

댓글