• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

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

20.10.20 14:05 작성 조회수 109

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

Hello Yeo님의 프로필

Hello Yeo

2020.10.21

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

3

spirit406님의 프로필

spirit406

질문자

2020.10.21

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

2

spirit406님의 프로필

spirit406

질문자

2020.10.21

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

2

Hello Yeo님의 프로필

Hello Yeo

2020.10.21

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