인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

realbrother98님의 프로필 이미지
realbrother98

작성한 질문수

홍정모의 따라하며 배우는 C언어

10.7 배열을 함수에게 전달해주는 방법

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

작성

·

178

0

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

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

답변 1

1

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

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

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

realbrother98님의 프로필 이미지
realbrother98

작성한 질문수

질문하기