void print_array(int numbers []); 와 같은 방식으로 배열을 매개변수로 전달
void print_array(int* numbers);와 같다.
우리가 C언어를 공부 할 때 pointer에 대한 개념을 배웠고 ‘배열의 이름’이 배열의 첫 번째 요소를 가리키는 포인터라는 것을 이미 공부했었다. “배열은 포인터다” 이에 대한 기억이 없다면 공부하고 보는 것을 추천한다.
void zeroArray(int numbers[], int size)
{
for (int i = 0; i < size; i++)
{
numbers[i] = 0;
}
}
위와 같은 코드를 보면 *(numbers + i)를 사용해 해당 i번째 배열에 접근해 값을 0으로 초기화 한다.
즉, 우리가 이전에 배운 pass by value와는 다르게 scope가 다른 변수에 접근해서 값의 변경이 가능하다. 이를 우리는 ‘Pass by reference’라고 배웠었다.
이제 우리는 위의 개념을 ‘참조자를 사용하여 전달한다.’ 라는 의미로 받아들이면 된다.
void scaleNumber( int& num );
“개인적으로는 매개변수로 받는 변수에 ‘num’이라는 별명을 붙인다! “ 라고 생각하는게 편했다.
#include <iostream>
void scaleNumber(int& num);
int main()
{
int number = 1000;
scaleNumber(number);
std::cout << number << std::endl;
return 0;
}
void scaleNumber(int& num)
{
if (num > 100)
{
num = 100;
}
}
위의 코드를 한번 자세하게 봐보자
우리는 scaleNumber(number)을 보고 ‘아! number라는 변수에 num이라는 별명을 붙였구나’ 라고 생각 할 수 있다.
#include <iostream>
void swap(int& a, int& b);
int main()
{
int x = 10, y = 20;
std::cout << x << " " << y << std::endl;
swap(x, y);
std::cout << x << " " << y << std::endl;
return 0;
}
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
위의 간단한 sawp 코드를 보면서 이해해 보자!
#include <iostream>
inline int addNumbers(int a, int b) {
return a + b;
}
int main() {
int result;
result = addNumbers(100, 200);
return 0;
}