강의

멘토링

로드맵

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

조준수님의 프로필 이미지
조준수

작성한 질문수

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

7.3 참조에 의한 인수 전달

vector 를 파라미터로 보낼때 질문

작성

·

315

0

vector를 함수 파라미터로 보낼때 다른 정적배열이나 동적배열

과는 다르게 레퍼런스로 보내지 않으면

배열을 복사하는거같더라고요. 즉 레퍼런스로 보내지 않으면 함수 안의 내용을 바꿔도 진짜 값은 안바뀌네요

백터도 엄연히 배열아닌가요??

벡터가 내부적으로 구현이 특별해서 그런걸까요?

테스트해보니 array 배열도 벡터랑 똑같네요

퀴즈

함수 정의 시 사용하는 '매개변수(parameter)'와 함수 호출 시 전달하는 '실인자(argument)'의 가장 큰 차이점은 무엇인가요?

전달되는 값의 타입

선언 시 사용되는 이름

함수 정의/선언 시 사용되는지, 호출 시 사용되는지

메모리 주소가 동일한지 여부

답변 1

2

vector 는 동적 배열을 편하게 사용하기 위해 만들어진 객체라고 보시면 돼요!

동적 배열이긴 동적 배열인데 클래스로 래핑 되어있다고 생각하시면 됩니다. 

(https://en.cppreference.com/w/cpp/container/vector 이런 멤버들이 있는 클래스에요)

vector<int> vec; 이런게 있다면 vector 라는 이름의 클래스 (push_back 같은 함수나 [ ] 연산자 이런 것들이 정의되어 있는) 에서 만들어진 vec 라는 객체라고 이해하는게 맞습니다.

질문자님께서는 vec 를 배열과 동일하게 생각하시어 포인터로 넘겨지니 call by reference 로 동작하는게 맞는 것 같다고 이해했는데 맞을까요? 위와 같은 설명에 기반하자면, vector 또한 그 자체로 뭐 포인터거나 그런게 아닌 그냥 객체나 마찬가지기 때문에 파라미터에 그냥 넘겼다면 다른 변수들처럼 call by value 로 넘어갑니다

조준수님의 프로필 이미지
조준수
질문자

아 그렇군요 감사합니다 

조준수님의 프로필 이미지
조준수

작성한 질문수

질문하기