Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
gyurim opened this issue Dec 2, 2021 · 0 comments
Open

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

gyurim opened this issue Dec 2, 2021 · 0 comments

Comments

@gyurim
Copy link
Owner

gyurim commented Dec 2, 2021

함수의 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); // 배열의 이름을 인수로 넘겨줄 경우, 주소값이 들어가기 때문에 배열의 모든 원소에 접근 가능 
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant