C++ 심폐소생기

Nitroblue 1·2026년 1월 7일

Computer Science Basics

목록 보기
17/20

Call-by-Value vs Call-by-Reference

  • Call by Value : 단지 인자의 값이 사용됨.
  • Call by Reference : 인자는 변수이고, 온전한 변수가 사용됨. 메모리 주소 직접 접근.

Overloading

  • 같은 함수 이름으로 두 가지 이상의 함수 정의가 주어질 때.

Fn argument로서의 array

void sumArray(double& sum, double a[], int size);

  • 배열은 fn에서 값이 변경될 경우 반영되기 때문에 Call-by-Reference에 가깝다.
  • 하지만, 배열은 메모리의 연속된 공간에 저장됨을 생각해보면 아래 3가지를 필요로 한다.
    • 첫 번째 인덱스 변수의 주소(메모리 위치)
    • 배열의 기본형(이는 각각의 인덱스 변수가 얼마만큼의 메모리를 사용하는 지 결정한다.)
    • 배열의 크기(인덱스 변수의 개수)
  • 배열이 함수의 인자로 사용될 때는 세 가지 정보 중 첫 번째만 함수에 주어진다. 또한, 기본형은 형식 매개변수의 기본형과 일치해야 하므로 함수는 배열의 기본형을 알고 있다.
  • 따라서 배열의 크기는 함수가 알 수 없다.
  • 즉, 컴퓨터는 배열이 얼마만큼의 인덱스 변수를 갖고 있는지 알지 못한다. 이것이 항상 배열의 크기를 별도의 int형으로 함수에게 알려줘야 하는 이유이며, Call-by-Reference와 엄연히 다른 이유이다.

    생각해보면, 이렇게 사이즈를 규정짓지 않음으로서 오히려 다양한 크기의 배열이 해당 함수를 사용할 수 있다는 점에서 재사용률을 증가시켜준다는 걸 알 수 있다.

  • 만약 배열의 값 변경을 막고싶다면 함수 헤드에서 선언해줘도 된다.
    • void showtheWorld(const int a[], int sizeOfa);
  • 함수는 보통 int, double과 같은 기본형을 리턴한다. 만약 배열의 포인터를 사용한다면 유사하게 배열을 리턴해주는 함수를 작성할 수 있다.

-> or . ?

접근자로 ->.중에 뭘 써야 하는가?

객체를 가리킬 땐 .
포인터를 가리킬 땐 ->

0개의 댓글