작성
·
368
0
p.108 Array의 요소 수정하기
함수에 매개변수로 전달할 때, 배열은 왜 int &a[]
형태가 아닌 int *a
로 전달해야하나요?
배열을 매개변수로 전달할때,
int a[] | int a[size] | int *a
이렇게 세 가지 형태로 전달해서 수정이 가능하다면, 결국 배열은 참조로 전달 해야지만 값을 변경할 수 있는 다른 타입들과는 다르게 매개변수로 주어졌을 때 항상 값이 변할 수 밖에 없는건가요?
답변 1
1
안녕하세요. ㅎㅎ
1.음.. int & a[]은 왜 안되냐는 말씀이시죠? 사실 됩니다.
다음 코드처럼 하시면 됩니다. 하지만 이렇게는 잘 안 쓰입니다.
#include <bits/stdc++.h>
using namespace std;
int a[] = {1, 2, 3};
int go(int (&a)[3]){
a[2] = 1;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
go(a);
cout << a[2] << '\n'; // 1
return 0;
}
2.네 C++에서 배열은 call by value가 불가능합니다.
감사합니다.