IT 관련자료/C++
참조에의한 인수전달
elkein
2022. 2. 18. 13:01
========================기본개념==================
void addOne(int &y)
{
//참조에 의한 호출, 주소가 모두 같다..!
cout << y << " " << &y << endl;
y += 1;
}
------------------------------메인함수부분
int x = 5;
cout << x << " " << &x << endl;
//여기서는 x라는 변수 자체가 들어간것과 동일
addOne(x);
cout << x << " " << &x << endl; //여기 출력값하고 위에 함수출력값하고 주소가 같음
==============레퍼런스인수 주의사항=======================================
void foo1(int*& ptr) //여기서 &는 레퍼런스. (int *) &ptr이렇게 봐도 무방
{
//ptr 자체의 주소값 //ptr주소의 주소값
cout << ptr << " " << &ptr << endl;
}
void foo(const int& x)
{
cout << x << endl;
}
------------------------메인함수 부분
int x1 = 5;
int *ptr = &x1;
foo1(ptr);
//foo(6); foo에서 입력값이 int &x인데, 6자체가 변수가 아니라 주소값이 없어서 안됨.
//그래서 이럴떄는 그냥 변수에 대입해서 넣어주거나, foo함수에 const int&x라고 선언
//단 이렇게 할 경우 함수 내부에서 x값을 변형시키면 안됨 그냥 입력값으로만 써야함.
리턴타입 두개 받고 싶을 때==============================================
//함수에서 return해 주는 값이 하나밖에 없으니까 리턴값을 두개이상 쓰고 싶을 때 이렇게 구현
//const double은 입력값으로만 받는구나~
//double&는 레퍼런스 값이니까 출력값으로 쓰겠구나... 하고 생각
//double&에 들어갈 값들은 임의값 초기화 후 레퍼런스 변수를 변환시켜줌
void getSinCos(const double degrees, 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);
}
메인함수부분------------------------------
double sin(0.0);
double cos(0.0);
getSinCos(30.0, sin, cos);
cout << sin << " " << cos << endl;
===========================================================