Skip to content

함수의 parameter (매개변수), argument (인수) #11

@gyurim

Description

@gyurim

함수의 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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions