[C++] call by value? reference?

2023. 7. 9. 16:18Algorithm/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