-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
함수의 parameter (매개변수), argument (인수)
call by value : 값을 이용한 전달
- 인수의 값(a)을 함수의 매개변수(num)로 값을 복사해 사용하는 방식
- 계산은 인수의 값에 영향주지 못한다.
void add(int num) {
num += 10;
}
int main() {
int a = 10;
add(a)
}call by reference : 참조를 이용한 전달
- 인수로 참조를 전달하여 값의 복사를 통한 전달이 아닌 원본 데이터를 직접 전달하는 방법 1
void add(int &num) {
num += 10;
}
int main() {
int a = 10;
add(a)
}call by reference (const 참조)
- 원본에 직접 접근하지만, 값을 바꿀 수는 없음
void add(const int &num) {
num += 10; // 에러가 뜬다.
}
int main() {
int a = 10;
add(a)
}call by address : 주소를 이용한 전달
- 원본 데이터에 직접 접근할 수 있는 방법 2
- 함수 내부에서 포인터의 역참조(*num)를 통해 원본 데이터에 접근할 수 있음
- 배열을 사용할 때 편리함
- (1) 포인터를 역참조할 경우, 직접 접근보다 느리며 (2) null값을 역참조하게 되면 프로그램이 강제 종료됨
void add(const int* num) {
*num = 12;
}
int main() {
int a = 10;
add(&a)
}
// 배열 넘기기
void print(int* _arr, int length) {
for (int i = 0; i < length; i++) {
cout << _arr[i] << " ";
}
}
int main() {
int arr[] = {1, 2, 3, 4};
int length = 4;
print(arr, length); // 배열의 이름을 인수로 넘겨줄 경우, 주소값이 들어가기 때문에 배열의 모든 원소에 접근 가능
}Metadata
Metadata
Assignees
Labels
No labels