-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
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 가 나옵니다)
그렇다면 배열명=배열 첫번째 원소의 주소= 함수의 인수로 사용될 때는 배열전체(배열 그 자체)의 주소??
라고 생각하면 될까요?
답변을 작성해보세요.
0
Hello Yeo
2020.07.09
배열의 이름은 배열의 첫번째 원소의 주소라고 생각하시는 것이 맞고, 인수로 넘겨주시는 경우에도 역시 동일합니다.
인수로 넘겨주셨을 때 값을 출력해보시면 좋을 것 같네요.
sizeof의 경우에는 배열의 크기를 반환해주지만 함수는 아닙니다.
함수의 parameter로 배열을 넘겨준 후에 그 함수 안에서 sizeof(arr) 를 출력해보시는 것도 도움이 될 것 같습니다.
답변 1