본문으로 건너뛰기

매개변수

매개변수란 함수에 전달되는 변수를 뜻합니다.

예를 들면, 두 수를 더하는 함수를 만들고 싶다면 두 매개변수를 입력합니다.

fn add(x: i32, y: i32) {
println!(x + y)
}

fn main() {
add(1, 2);
}
매개변수를 선언할 떄 데이터 타입을 적어야 합니다.

x: 32, y: 32와 같이. :::

값을 통해 정보 전달

만일 함수 안에서 변수의 값을 바꾸어야 한다면 mut를 통해 바꿀 수 있습니다.

하지만 그 함수 밖에서는 그 값이 바뀌어 있지 않았을 것입니다.

그 이유는 Ownership 때문에 인데 이는 나중에 더 자세히 알아보겠습니다.

fn square(mut n: i32){
n = n * n;
println!("함수 안: {}", n);
}

fn main() {
let n = 4;
println!("함수 전: {}", n);
square(n);
println!("함수 실행함");
println!("함수 후: {}", n);
}

참조를 통한 정보 전달

참조란 그 변수의 값만 사용하는 것이 아니라 그 변수의 위치를 사용한다는 뜻입니다.

즉, 변수를 항상 사용할 떄 그 변수의 값만 사용했지만 참조를 한다면 그 변수의 위치를 사용합니다.

위치는 변수 이름 앞에 &를 붙이면 됩니다.

사실 &를 붙이든 말든 출력하면 값은 같으나 *를 사용해서 값을 바꾸게 된다면 그 위치의 값이 바뀌어 원래 변수의 값이 바뀌게 됩니다.

fn square(&mut n: i32){
*n = *n * *n;
println!("함수 안: {}", n);
}

fn main() {
let n = 4;
println!("함수 전: {}", n);
square(n);
println!("함수 실행함");
println!("함수 후: {}", n);
}