반응형
두 숫자를 바꿔주는 swap() 함수를 예제로 아래 세 가지를 알아보자.
- Call by reference
- Call by address
- Call by value --> 얘만 안되니까 얘부터 시작
Call by value
결과에 주목하세요. a와 b는 변경이 되지 않는다.
#include <stdio.h>
// call by value
void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
}
int main() {
int a = 3;
int b = 7;
swap(a, b);
printf("swap(a, b) : [%d], [%d]\n", a, b);
return 0;
}
result
swap(a, b) : [3], [7]
Call by address
주소 값을 전달합니다.
함수에서는 포인터를 사용하여서 표연하여야 하고,
입력 받는 곳에서는 주소 참조연산자를 붙여야 한다.
** & : 주소 참조 연산자
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = 3;
int b = 7;
swap(&a, &b);
printf("swap(a, b) : [%d], [%d]\n", a, b);
return 0;
}
result
swap(a, b) : [7], [3]
Call by reference
(only in C++, 참조연산자 사용 가능)
함수에서 값을 받을 때, 주소 참조 연산자를 사용하여 받습니다.
함수의 변수선언 부분의 의미는 주소를 '찾아가서, 해당 값을 읽으세요.'
#include <stdio.h>
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int a = 3;
int b = 7;
swap(a, b);
printf("swap(a, b) : [%d], [%d]\n", a, b);
return 0;
}
result
swap(a, b) : [7], [3]
반응형
': any' 카테고리의 다른 글
[맥] 추가 설치없이(karabiner없이), 오른쪽 커맨드로 한영키 전환 (5) | 2021.07.04 |
---|---|
Encryption (0) | 2021.04.28 |
개발환경 설정 (0) | 2021.04.28 |
[System] Alt + F12 동작 안함, Fn key 비활성화 (0) | 2021.04.15 |