いわゆるpass by valueとpass by reference。
pass by valueだと、関数がcallされたときに、値をそのままコピーしてしまう、ということはコピーされた変数にも空間が作られる。
pass by referenceだと、値をコピーせず、アドレスを参照にしにいく。
そのため、値が大きくなるとわかっている場合、コピーではなく、参照させたほうが効率が良い場合がある。
値参照のやり方は下記。 関数宣言部分の変数に、 &をつけるだけ。
#include <iostream> #include <string> #include <typeinfo> using namespace std; string print_string_list( const string &, const string &, const string & ); void clear_string_list( string &, string &, string & ); void string_list() { string s_1 {"a"}; string s_2 {"b"}; string s_3 {"c"}; print_string_list(s_1, s_2, s_3); clear_string_list(s_1, s_2, s_3); print_string_list(s_1, s_2, s_3); } string print_string_list( const string &s_1, const string &s_2, const string &s_3 ) { cout << s_1 << "¥n" << s_2 << "¥n" << s_3 << endl; string test_1 = typeid(s_1).name(), test_2 = typeid(s_2).name(), test_3 = typeid(s_3).name(); return test_1 + test_2 + test_3; } void clear_string_list(string &s_1, string &s_2, string &s_3) { s_1 = " "; s_2 = " "; s_3 = " "; }