You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
voidadd(int num) {
num += 10;
}
intmain() {
int a = 10;
add(a)
}
call by reference : 참조를 이용한 전달
인수로 참조를 전달하여 값의 복사를 통한 전달이 아닌 원본 데이터를 직접 전달하는 방법 1
voidadd(int &num) {
num += 10;
}
intmain() {
int a = 10;
add(a)
}
call by reference (const 참조)
원본에 직접 접근하지만, 값을 바꿀 수는 없음
voidadd(constint &num) {
num += 10; // 에러가 뜬다.
}
intmain() {
int a = 10;
add(a)
}
call by address : 주소를 이용한 전달
원본 데이터에 직접 접근할 수 있는 방법 2
함수 내부에서 포인터의 역참조(*num)를 통해 원본 데이터에 접근할 수 있음
배열을 사용할 때 편리함
(1) 포인터를 역참조할 경우, 직접 접근보다 느리며 (2) null값을 역참조하게 되면 프로그램이 강제 종료됨
voidadd(constint* num) {
*num = 12;
}
intmain() {
int a = 10;
add(&a)
}
// 배열 넘기기 voidprint(int* _arr, int length) {
for (int i = 0; i < length; i++) {
cout << _arr[i] << "";
}
}
intmain() {
int arr[] = {1, 2, 3, 4};
int length = 4;
print(arr, length); // 배열의 이름을 인수로 넘겨줄 경우, 주소값이 들어가기 때문에 배열의 모든 원소에 접근 가능
}
The text was updated successfully, but these errors were encountered:
함수의 parameter (매개변수), argument (인수)
call by value : 값을 이용한 전달
call by reference : 참조를 이용한 전달
call by reference (const 참조)
call by address : 주소를 이용한 전달
The text was updated successfully, but these errors were encountered: