[C++]参照によるパラメータの伝達
14043 ワード
例01
#include <iostream>
#include <cmath> // sin(), cos()
using namespace std;
void addOne(int &y)
{
cout << y << " " << &y << endl;
y = y + 1;
}
int main()
{
int x = 5;
cout << x << " " << &x << endl;
addOne(x);
cout << x << " " << &x << endl;
return 0;
}
5 0x61ff0c
5 0x61ff0c
6 0x61ff0c
参照転送のパラメータは、値をコピーするのではなく、値を直接転送するため、アドレスは同じです.例02
#include <iostream>
#include <cmath> // sin(), cos()
using namespace std;
void getSinCos(const double °rees, double &sin_out, double &cos_out)
{
static const double pi = 3.141592;
const double radians = degrees * pi / 180.0;
sin_out = std::sin(radians);
cos_out = std::cos(radians);
}
int main()
{
double sin(0.0);
double cos(0.0);
getSinCos(30.0, sin, cos);
cout << sin << " " << cos << endl;
return 0;
}
0.5 0.866025
例03
#include <iostream>
#include <cmath> // sin(), cos()
using namespace std;
void foo(const int &x) // const
{
cout << x << endl;
}
int main()
{
foo(6); // 매개변수로 literal
return 0;
}
参照を関数に使用する場合、パラメータに直接文字を入れる場合は、const
を貼り付けるだけです.例04
#include <iostream>
#include <cmath> // sin(), cos()
using namespace std;
typedef int *pint; // typedef를 이용한 사용자 정의 자료형
void foo(pint &ptr) // 포인터에 대한 참조(reference)
{
cout << ptr << " " << &ptr << endl;
}
int main()
{
int x = 5;
pint ptr = &x;
foo(ptr);
return 0;
}
void foo(int *&ptr)
{
cout << ptr << " " << &ptr << endl;
}
ポインタへの参照(reference)を送信できます.(int*) &ptr
で説明するのが便利です.または、
typedef
を使用してカスタム資料として表示することもできる.例05
#include <iostream>
#include <cmath> // sin(), cos()
#include <vector>
using namespace std;
void printElement(vector<int> &arr)
// void printElement(int (&arr)[4])
{
}
int main()
{
// int arr[]{1, 2, 3, 4};
vector<int> arr{1, 2, 3, 4};
printElement(arr);
return 0;
}
vector
資料型も参照できます.Reference
この問題について([C++]参照によるパラメータの伝達), 我々は、より多くの情報をここで見つけました https://velog.io/@t1won/C-참조에-의한-인수-전달テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol