🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

6.8 포인터와 정적배열 질문드립니다

20.07.09 20:07 작성 조회수 80

0

예를 들어

int num[5]={1,2,3,4,5}; 에서

배열 num을 가리키는 포인터 변수를 아래와 같은 2가지 방법으로 선언 한다고 강의에서 학습했습니다 ,

1.  int *ptr=num;  or 

2.  int ptr=&num[0];

그래서 배열명=배열 첫번째 원소의 주소 이렇게 정리하려고 했는데,

생각해보니 함수에서 배열을 인수로 넘길때,

 Function(num); 이런 식으로 배열명으로 넘기잖아요?  아무리 생각해 봐도 함수 호출할때 인수로 넣는 배열명은

배열 첫번째 원소의 주소만 넘기는 게 아니라 배열 전체를 넘기는 거 같더라구요.

(ex sizeof(num) 했을때,

배열명= 배열 첫번째 원소의 주소 라면 4byte일텐데 배열 전체 크기인 20 byte 가 나옵니다)

그렇다면 배열명=배열 첫번째 원소의 주소= 함수의 인수로 사용될 때는 배열전체(배열 그 자체)의 주소?? 

라고 생각하면 될까요?

답변 1

답변을 작성해보세요.

0

Hello Yeo님의 프로필

Hello Yeo

2020.07.09

배열의 이름은 배열의 첫번째 원소의 주소라고 생각하시는 것이 맞고, 인수로 넘겨주시는 경우에도 역시 동일합니다.
인수로 넘겨주셨을 때 값을 출력해보시면 좋을 것 같네요.

sizeof의 경우에는 배열의 크기를 반환해주지만 함수는 아닙니다.
함수의 parameter로 배열을 넘겨준 후에 그 함수 안에서 sizeof(arr) 를 출력해보시는 것도 도움이 될 것 같습니다.

채널톡 아이콘