포인터 아주 기초 질문....

조회수 362회
#include <stdio.h>

int main()
{
    int a = 10;
    int *pa = &a;
    *pa = 20;
    printf("%d", a);
    return 0;
}

이 코드에서 a의 메모리자리?에 할당되어있는 10이 20으로 바뀌어서 printf로 출력할때 20으로 바뀌는게 맞나요??

너무 기초적인 질문해서 죄송합니다..

1 답변

  • 네 맞습니다.

    cling 이라는 c++ 인터프리터로 테스트 해봤습니다.

    메모리 주소를 유심히 살펴보세요.

    그리고 포인터 표현시 혼동이 될 수 있는 부분이 int *pa = &a 표시인데 이것을 int* pa = &a 형태로 * 를 자료형쪽에 붙이면 더 읽기가 좋습니다. 즉 "변수 pa는 int 포인터 타입이다"라고 자연스럽게 읽힙니다.

    [cling]$ int a = 10
    (int) 10
    [cling]$ &a
    (int *) 0x7fa318174010
    [cling]$ int *pa = &a
    (int *) 0x7fa318174010
    [cling]$ *pa = 20
    (int) 20
    [cling]$ pa
    (int *) 0x7fa318174010
    [cling]$ a
    (int) 20
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)