• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

배열이 매개 변수로 사용 될 때 포인터로 바뀔 때 내부 상황이 궁금합니다.

21.12.10 10:25 작성 조회수 127

0

포인터에 배열이름으로 배열의 첫 주소를 저장할 때와 같은 배열이름이 포인터처럼 작동할 때는 메모리를 사용하는 게 아니라 단순히 컴파일러가 변환시켜주는 것으로 알고 있습니다.

그런데 매개변수로 사용할 때는 그 크기가 포인터의 크기로 나오면 메모리에 실제로 포인터 변수가 만들어진 건가요? 그게 아니라면 어떻게 sizeof연산자를  사용했을 때 포인터의 크기가 나오는지 잘 모르겠습니다.

답변 1

답변을 작성해보세요.

1

안소님의 프로필

안소

2021.12.12

포인터 변수를 만들어주기보단 #define 처럼 단순히 코드를 치환해주는 것일거에요! 

매개변수를 int arr[] 로 썼더라도 전처리 과정에서 int * arr 로 코드 문장을 바꿔주는.. 

그렇기에 사실 포인터 변수를 만들어준다기보다는 매개변수 int arr[] 는 애초에 원래 포인터입니다. int arr [] 로 코드를 써도 문법상 허용해주는 그런 차원인 것입니다.