[C++] call by value? reference?
2023. 7. 9. 16:18ㆍAlgorithm/with C++
1. 주소연산자&와 참조연산자&
#include<iostream>
using namespace std;
int value(int a){
a += 10;
cout << "value : " << a << " ";
return 0;
}
int ref(int& a){ //참조연산자&
a += 10;
cout << "ref : " << a << " ";
return 0;
}
int main(){
int a = 1;
value(a);
cout << a << '\n';
ref(a);
cout << a << '\n';
return 0;
}
/*
value : 11 1
ref : 11 11
*/
int ref(int& a){ //참조연산자&
:&
기호는 C++에서 참조를 의미합니다. 참조는 변수의 별명(alias)으로 볼 수 있으며, 그 변수가 저장된 메모리 주소에 직접 접근할 수 있게 합니다. 함수의 매개변수로 사용될 때,&
는 참조 전달(Reference Passing) 또는 "Pass-by-Reference"라고 부릅니다. 이것은 함수로 전달되는 인자가 실제 변수의 복사본이 아닌, 그 변수 자체임을 의미합니다. 따라서 함수 내에서 참조로 전달된 변수의 값을 변경하면, 그 변경사항이 호출자의 원래 변수에 반영됩니다.
2. vector와 array : call by ?
#include<iostream>
#include<vector>
using namespace std;
vector<int> v(3, 0);
void go_vec(vector<int> v){
v[1] = 100;
}
int a[3] = {0,0,0};
void go_arr(int a[]){
a[1] = 100;
}
int main(){
cout << "vector" <<endl;
for(int i : v) cout << i << " ";
cout << endl;
go_vec(v);
for(int i : v) cout << i << " ";
cout << endl;
cout << "array" <<endl;
for(int i : a) cout << i << " ";
cout << endl;
go_arr(a);
for(int i : a) cout << i << " ";
cout << endl;
return 0;
}
/*
vector
0 0 0
0 0 0
array
0 0 0
0 100 0
vector -> call by value
array -> call by reference
*/
- vector -> call by value
- array -> call by reference
'Algorithm > with C++' 카테고리의 다른 글
[알고리즘] 2309: 일곱 난쟁이 (0) | 2023.07.10 |
---|---|
[C++] 순열 (0) | 2023.07.10 |
[C++] struct 구조체 (0) | 2023.07.09 |
[C++] stack & queue & deque & priority_queue (0) | 2023.07.09 |
[C++] set & multiset (0) | 2023.07.09 |