목차
값에 의한 전달(Call by Value)
C언어에서 함수의 매개변수는 기본적으로 값에 의한 전달(Call by Value) 방식으로 전달됩니다. 이는 함수에 인수를 전달할 때 값의 복사본이 생성되어 함수에 전달된다는 것을 의미합니다. 따라서 함수 내에서 매개변수의 값을 변경해도 원래 변수에는 영향을 미치지 않습니다.
예를 들어, 다음과 같은 함수가 있다고 가정해 봅시다.
void changeValue(int x) {
x = 10;
}
이 함수를 호출하는 코드는 다음과 같습니다.
int a = 5;
changeValue(a);
printf("%d\n", a); // 5를 출력
changeValue 함수 내에서 x의 값을 변경했지만, 이는 a의 값에 영향을 미치지 않습니다. 왜냐하면 x는 a의 복사본이기 때문입니다.
참조에 의한 전달(Call by Reference)
포인터를 사용하면 참조에 의한 전달(Call by Reference)을 구현할 수 있습니다. 이는 함수에 변수의 주소를 전달함으로써 원래 변수를 직접 변경할 수 있게 합니다.
예를 들어, 다음과 같은 함수가 있다고 가정해 봅시다.
void changeValue(int *p) {
*p = 10;
}
이 함수를 호출하는 코드는 다음과 같습니다.
int a = 5;
changeValue(&a);
printf("%d\n", a); // 10을 출력
이번에는 changeValue 함수 내에서 *p의 값을 변경하면, 이는 a의 값에 직접적인 영향을 미칩니다. 왜냐하면 p는 a의 주소를 가리키는 포인터이기 때문입니다.
따라서 C언어에서는 값에 의한 전달과 참조에 의한 전달 두 가지 방식을 모두 사용할 수 있습니다. 이 두 방식은 각각의 장단점이 있으므로, 상황에 따라 적절한 방식을 선택하는 것이 중요합니다.
** 이 글이 좋았다면 좋아요와 구독을 눌러주세요. **
'프로그래밍 > 겁나 쉽게 쓴 C, C++ 설명서' 카테고리의 다른 글
조건문이란? if, switch (0) | 2024.05.01 |
---|---|
C언어의 연산자 (0) | 2024.05.01 |
함수란? (0) | 2024.04.30 |
포인터란? (0) | 2024.04.30 |
배열이란? (0) | 2024.04.30 |