강의

멘토링

커뮤니티

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

solitary님의 프로필 이미지
solitary

작성한 질문수

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

7.3 참조에 의한 인수 전달

함수의 매개변수에 배열을 넣을 때

작성

·

188

0

#include <iostream>
#include <vector>

using namespace std;

void func1(int arr[])
{
    arr[0] = 7;
}

void func2(vector<int> v)
{
    v[10] = 7;
}

int main()
{
    int arr[] = {0, 0};
    vector<int> v(100);
    func1(arr);
    func2(v);
    cout << arr[0] << " " << v[10];
    
    return 0;
}

->  7  0

매개변수에 배열이 들어가면 배열의 주소가 복사되어 들어갈텐데 func1의 경우 래퍼런스를 사용한 것도 아닌데 func1 내에서의 arr과 main에서 arr의 주소가 같은지 모르겠습니다.  func2의 경우는 func2 내부와 main에서 v의 주소가 다름을 확인했습니다.

주소가 그대로 매개변수에 들어가 함수에서 바뀐 값이 출력되었는데 어떤 이유로 arr의 주소가 공유가 되는것인가요?

답변 1

0

안녕하세요

arr 의 주소를 확인할 때 &arr 로 확인을 해보신 건가요? 

arr 의 주소면 곧 배열 이름의 주소라는 것인데 배열 이름의 주소는 개발자가 확인할 수 없습니다.

배열 이름의 주소(&arr) 는 배열 이름 값, 즉 arr 과 같습니다. (첫번째 원소의 주소값)

그래서 &arr 로 확인하셨어도 사실상 arr 나 마찬가지이기 때문에 같은 값이 출력되셨을거에요. 

solitary님의 프로필 이미지
solitary

작성한 질문수

질문하기