C++
매개변수에 들어가는 배열
khkg12
2023. 7. 11. 15:27
배열의 경우 매개변수로 값을 넘길 때 call by address가 일어나게 되어있다. 그 이유는 최적화적 관점에서 살펴보면 쉽게 알수 있는데 만약 배열을 call by value로 넘길 경우 값의 복사가 일어나 배열 전체를 복사하기 때문에 메모리 낭비가 되기 때문이다.
ex) Func(int* arr(=int arr[]) , int size) 에서 배열을 넘겨줄 때 배열자체를 복사하는 것이 아닌 배열의 첫번째 인덱스 주소를, 즉 call by address로 넘겨주기 때문에 실제 아규먼트의 배열의 값을 변경함. 따라서 값이 복사가 일어나지 않고 직접적으로 데이터를 변경시킬 수 있기 때문에 최적화적으로 유리하다. 물론 실제로 값이 변경되기 때문에 주의해서 사용해야 한다.