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

spirit406님의 프로필 이미지
spirit406

작성한 질문수

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

6.2 배열 기초 [2 of 2] array

doSomething 안의 sizeof(student_scores) 와 main 안의 sizeof(student_scores)

해결된 질문

작성

·

167

0

항상 고생많으십니다. 공부하는 중에 햇갈리는 것이 있어서 질문 남깁니다.

11:00 ~ 12:00 에서 doSomething 안의 sizeof(student_scores) 와 main 안의 sizeof(student_scores)가 다르게 나오는데, 제가 이해하기로는 main함수 안의 student_scores 도 해당 배열의 첫번 째 주소이고, doSomething 함수의 매개변수로 넘어간 students_scores 도 마찬가지로 결국 student_scores 배열의 첫번 째 주솟값을 가지고 있는 것으로 알고 있습니다. 

결론적으로 sizeof함수에 배열의 첫번째 주솟값을 하나는 main안에서 하나는 doSomething 함수안에서 넣어준 것인데 왜 여기서 main에 있는 것만 배열 전체 크기를 출력하고 doSomething 함수의 것은 포인터 변수의 크기만을 출력하는 지 궁금합니다. 그냥 단지 students_scores 배열이 main에서 정의 되었기 때문에 다른 의미를 갖는 건가요?

이건 제 추측인데, sizeof라는 함수가 매개변수의 주소를 접근해서 크기를 구하는데, main에서 정의된 배열은 그 주소들도 20개로 나열되있는 반면에, doSomething 안에 매개변수로 간 포인터는 students_scores 배열의 첫번째 주솟값을 저장하는 주소가 하나만 덩그라니 있어서 4byte만 출력되는 것인가요?

답변 4

3

그렇게도 볼 수 있지만 언어에서는 배열과 포인터를 서로 구분합니다.

3

spirit406님의 프로필 이미지
spirit406
질문자

main에 있는 배열의 이름도 결국에는 배열의 첫 요소의 주소를 가리키는 포인터 아닌가요?

2

spirit406님의 프로필 이미지
spirit406
질문자

아 그렇군요! 늦은 시간에 빠른 답변 감사합니다!

2

안녕하세요?
강의에서도 설명하지만 doSomething안의 student_scores 는 포인터이기 때문입니다.

spirit406님의 프로필 이미지
spirit406

작성한 질문수

질문하기