본문 바로가기

전체 글

(71)
[C++] 1-7 참조자(Reference) 사용 이유 및 포인터 차이 참조자(Reference) 포인터의 일부분을 대신해 주는 것으로 참조자(reference)가 있다. 참조자는 특정 변수를 다른 이름으로 만들거나 함수의 인수를 전달할 때 유용하게 사용된다. 실제로 참조자는 함수와 함께 사용되는 경우가 대부분이다. 참조자 변수는 아래와 같이 참조 연산자인 &를 사용하여 선언한다. -예시- 데이터형 &참조자 변수 = 변수 참조자 변수는 포인터와 비슷해 보이지만 포인터는 아니다. 포인터는 주소를 가리키지만 참조자 변수는 이미 존재하는 변수와 동일한 데이터 값과 동일한 주소를 갖는다. 따라서 참조자 변수의 데이터형은 대응하는 변수의 데이터형과 동일해야 한다. 그리고 참조자 변수의 값을 변경하면 상응하는 변수의 값도 변한다. 반대인 상황도 마찬가지이다. 참조자 변수를 만드는데 몇..
[C++] 1-6 함수 호출 방식 (call by reference) Call by reference call by reference 방식에서는 실인수의 주소가 함수에 전달된다. 함수는 실인수의 주소를 가인수로 복사하여 사용하므로 마치 실인수를 직접 사용하는 것과 같이 된다. 즉, 함수에서 가인수의 값을 바꾸면 호출 측의 실인수 값도 변한다. 이때 가인수는 주소를 전달받기 때문에 포인터로 선언돼야 한다. 함수에서 return문에 의해 반환되는 값의 개수는 오직 하나이다. 따라서 두 개 이상의 값을 반환하고 싶다면 call by reference 방식을 사용하는 것이 좋다. 또한 배열을 함수로 전달하는 경우에도 call by reference 방식을 사용하는 것이 편리하다. 예제 1 #include using namespace std; void func(int x, int ..
[C++] 1-5 함수 호출 방식 (call by value) 함수 호출 방식 함수가 호출해서 인수를 전달하는 방식은 크게 두가지가 있다. 하나는 call by value 방식이고, 다른 하나는 실인수의 주소(address)를 가인수에 전달하는 call by reference 방식이 있다. 이번 포스팅에서 call by value 방식을 설명하고자 한다. Call by value call by value는 가장 일반적인 함수 호출 방식이고, 실인수의 실제값이 피 호출 함수로 전달된다. 이때 함수는 실인수의 값을 가인수로 복사하여 사용하게 되는데, 실인수와 가인수는 서로 다른 메모리 영역을 차지한다. 가인수들은 stack이라는 임시 메모리 영역에 저장되며 함수가 종료되면 이들 가인수들은 stack에서 사라진다. 따라서 함수 실행 중에 가인수의 값이 변하더라도 실인수의..