본문 바로가기

C++ IDE를 위한 과정

C++ call by 기능

728x90
반응형

저번 포스팅에서 이어서 포인터를 이용한 call by 명령어를

같이 공부해봅시다.


call by value

  • 함수에 값을 전달할 때, 전달된 값의 복사본이 함수로 전달되는 함수
  • 원래 변수는 함수의 변경에 영향을 받지 않음
//Call By Value 예시
#include <iostream>
#include <string>

using namespace std;

void callByValue(int x) {
	x = 100;
	cout << "함수 내부에서 x: " << x << endl;
}
int main() {
	int num = 10;
	cout << "함수 호출 전 num: " << num << endl;
	callByValue(num);
	cout << "함수 호출 후 num: " << num << endl;

	return 0;
}


call by reference

  • 함수에 값을 전달할 때, 전달된 변수의 참조(주소)가 함수로 전달됨
  • 원래 변수는 함수의 변경에 영향을 받음
//Call By Reference 예시
#include <iostream>

using namespace std;

void callByReference(int& x){
	x = 100;
    cout << "함수 내부에서 x: " << x << endl;
}

int main(){
	
    int num = 10;
    cout << "함수 호출 전 num: " << num << endl;
    callByReference(num);
    cout << "함수 호출 후 num: " << num << endl;
    return 0 ;

}

  • 위 두 기능의 차이는 변수가 저장된 메모리의 주소를 건들이느냐 마느냐의 차이
  • call by value 같은 경우 변수의 명만 같을 뿐 메모리의 주소가 다르기 때문에 변수에 영향을 주지 못함
  • call by reference 같은 경우 변수의 참조부분 주소를 사용하기 때문에 변수에 직접적인 영향을 줌 

실습. 원본데이터 변경 해보기

  • 입력함수와 값 증가함수를 구현하고 입력 함수로 값을 한번 입력받은 다음 값 증가 함수를 입력 함수의 세번째 인자(증가시킬 횟수) 만큼 실행하여 증가시키십시오.
  • 입력 함수: call by reference를 사용하여 두 숫자와 증가시킬 횟수( 1씩 증가)를 입력 받습니다.
  • 값 증가 함수 : 두 숫자를 call by reference로 전달받아, 원래 값을 각각 1씩 증가시키고 합을 출력합니다.

결과 예시

#include <iostream>
using namespace std;

void callByReference(int &a, int &b, int &c){
	
    cout << "첫 번째 숫자를 입력하세요 : ";
    cin >> a;
    cout << "두 번째 숫자를 입력하세요 : ";
    cin >> b;
    cout << "값을 증가시킬 횟수를 입력하세요 : ";
    cin >> c;
    cout << "입력된 값 : 첫 번째 숫자 : " << a << ", 두 번째 숫자 : " << b << ", 증가 횟수 : "<< c << "\n" << endl;
}

void Inc_num(int &x, int &y, int &z){
	
    for(int i = 0; i < z; i++){
    	
        cout << "증가 "<< i + 1 << "회차 : " << endl;
        x += 1;
        y += 1;
        cout << "현재 값 : 첫 번째 숫자 : " << x << ", 두 번째 숫자 : " << y << "\n" << endl;
    }
}

int main() {
	int num1 = 0;
	int num2 = 0;
	int count = 0;
    callByReference(num1, num2, count);
    Inc_num(num1, num2, count);
}

 

다음 시가도 포인트 관련 함수입니다. 중요한 만큼 꼭 천천히 읽어주시길 바랍니다.

오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!


과제.종합실습

동적으로 배열 할당후 입력하기

  • 동적으로 배열을 조작할 수 있는 클래스를 구현하고 각 메소드 배열에 대한 초기 생성, 추가 및 값 할당, 삭제, 현재 배열 출력이 가능한 기능을 구현하고 관리 하시오.
    1. 초기 배열생성!
    2. 1을 누르면 현재 배열의 요소들 출력!
    3. 2를 누르면 배열을 하나 추가하고 값입력!
    4. 3을 누르면 배열을 하나 삭제하고 삭제된 현재 상태 배열 출력!
    5. 0을 누르면 관리 종료!

결과 예시

해답 예시는 하루코딩에서

반응형

'C++ IDE를 위한 과정' 카테고리의 다른 글

C++ 문자열 포인터  (0) 2025.03.13
C++ 포인터 AND 동적배열  (0) 2025.02.24
C++ namspace  (0) 2025.02.21
C++ 구조체 VS 클래스, getter setter, 상속  (0) 2025.02.12
C++ 클래스 & this pointer  (0) 2025.02.11