작성
·
178
0
포인터에 배열이름으로 배열의 첫 주소를 저장할 때와 같은 배열이름이 포인터처럼 작동할 때는 메모리를 사용하는 게 아니라 단순히 컴파일러가 변환시켜주는 것으로 알고 있습니다.
그런데 매개변수로 사용할 때는 그 크기가 포인터의 크기로 나오면 메모리에 실제로 포인터 변수가 만들어진 건가요? 그게 아니라면 어떻게 sizeof연산자를 사용했을 때 포인터의 크기가 나오는지 잘 모르겠습니다.
답변 1
1
포인터 변수를 만들어주기보단 #define 처럼 단순히 코드를 치환해주는 것일거에요!
매개변수를 int arr[] 로 썼더라도 전처리 과정에서 int * arr 로 코드 문장을 바꿔주는..
그렇기에 사실 포인터 변수를 만들어준다기보다는 매개변수 int arr[] 는 애초에 원래 포인터입니다. int arr [] 로 코드를 써도 문법상 허용해주는 그런 차원인 것입니다.