728x90
(1) 인수 전달 방법
함수를 호출할 때에는 함수에 필요한 데이터를 인수(argument)로 전달해 줄 수 있다.
인수를 전달하는 방법은 크게 두 가지가 있다.
- 값에 의한 전달 (call by balue)
- 참조에 의한 전달 (call by reference)
(2) 값에 의한 전달 (call by value)
인수로 전달하는 값을 함수 내의 매개 변수에 복사하는 방식이다.
이러한 방식은 원본 변수와 복사된 값인 매개 변수는 별개의 변수이다.
따라서 매개 변수의 값 변경은 원본 변수에 영향을 미치지 않는다.
#include <stdio.h>
void local(int);
int main(void) {
int var = 10;
printf("var의 초기값은 %d\n", var);
local(var);
printf("local() 호출 후 var의 값은 %d\n", var);
return 0;
}
void local(int num) {
num += 10;
}
// 출력
// var의 초기값은 10
// local() 호출 후 var의 값은 10
(3) 참조에 의한 전달 (call by reference)
참조에 의한 전달 방법은 인수로 변수의 값을 전달하는 것이 아닌, 변수의 주소값만을 전달한다.
즉, 매개 변수로 주소값을 전달하는 것이다.
따라서 인수로 전달된 변수의 실제 값을, 전달받은 함수 영역 내에서 변경할 수 있다.
원본 변수의 값이 바뀌는 것을 주의하며 사용하자.
#include <stdio.h>
// 포인터 변수
void local(int*);
int main(void) {
int var = 10;
printf("var의 초기값은 %d\n", var);
// local()의 매개 변수를 포인터 변수로 선언하였기에
// 주소값을 인수로 넘긴다.
local(&var);
printf("local() 호출 후 var의 값은 %d\n", var);
return 0;
}
// 포인터 변수
void local(int* num) {
*num += 10;
}
// 출력
// var의 초기값은 10
// local() 호출 후 var의 값은 20
🍉 참고
반응형
'Language > C' 카테고리의 다른 글
[C언어] 전위/후위 연산자 (0) | 2024.04.23 |
---|---|
[C언어] 포인터의 연산 (0) | 2024.04.16 |
[C언어] 포인터와 구조체 (0) | 2024.04.16 |
[C언어] 구조체 (2) | 2024.04.15 |
[C언어] 자료형 (1) | 2024.04.15 |