728x90
[ 참조자 기반의 Call-by-reference 구현 ]
더보기
01. 참조자를 이용해서 다음 요구사항에 부합하는 함수를 각각 정의하여라.
1. 인자로 전달된 int형 변수의 값을 1씩 증가시키는 함수
2. 인자로 전달된 int형 변수의 부호를 바꾸는 함수
그리고 위의 각 함수를 호출하여 그 결과를 확인하는 main 함수까지 작성하여라.
#include <iostream>
using namespace std;
void AddNumber(int& ref1, int& ref2);
void ChangeNumber(int& ptr1, int& ptr2);
int main(void)
{
int num1 = 10;
int num2 = 20;
int num3 = -30;
int num4 = 40;
AddNumber(num1, num2);
ChangeNumber(num3, num4);
cout << "num1 :" << num1 << endl;
cout << "num2 :" << num2 << endl;
cout << "num3 :" << num3 << endl;
cout << "num4 :" << num4 << endl;
}
void AddNumber(int& ref1, int& ref2)
{
ref1++;
ref2++;
}
void ChangeNumber(int& ptr1, int& ptr2)
{
ptr1*= -1;
ptr2*= -1;
}
더보기
02. 앞서 소개한 예제 RefSwap.cpp의 SwapByRef2 함수를 다음의 형태로 호출하면 컴파일에러가 발생한다.
SwapByRef2(23, 45);
컴파일 에러가 발생하는 이유가 무엇인지 설명해보자.
SwapByRef2의 매개변수로 참조자를 받고있다. 참조자의 경우 상수 값으로 선언하는 것이 아닌 변수로 선언해서 해당 변수를 참조해야하기 때문에 컴파일 오류가 난다[?]
더보기
03.문제의 제시에 앞서 먼저 다음 코드를 보자.
위의 코드를 보면 ptr1과 ptr2가 각각 num1과 num2를 가르키고 있다. 이때 ptr1과 ptr2를 대상으로 다음과 같이 함수를 호출하고 나면, SwapPointer(ptr1, ptr2);
ptr1과 ptr2가 가르키는 대상이 서로 바뀌도록 SwapPointer 함수를 정의해 보자.
#include <iostream>
using namespace std;
void SwapPointer(int* (&ref1), int* (&ref2));
int main(void)
{
int num1 = 5;
int *ptr1 = &num1;
int num2 = 10;
int *ptr2 = &num2;
cout << "ptr1 :" << *ptr1 << endl;
cout << "ptr2 :" << *ptr2 << endl;
SwapPointer(ptr1, ptr2);
cout << "ptr1 :" << *ptr1 << endl;
cout << "ptr2 :" << *ptr2 << endl;
}
void SwapPointer(int* (&ref1), int* (&ref2))
{
int* temp = ref1;
ref1 = ref2;
ref2 = temp;
}
728x90
'C++언어 > 개념 공부' 카테고리의 다른 글
[ 열혈 c++ 프로그래밍 ] Part1 - 3 (0) | 2022.08.25 |
---|---|
[ 열혈 c++ 프로그래밍 ] Part1 - 2 (0) | 2022.08.24 |
[ 열혈 c++ 프로그래밍 ] Part1 - 1 (0) | 2022.08.24 |