Call me by your name

niraaah·2023년 5월 1일
3

혼자하는 스터디

목록 보기
18/25
post-thumbnail

[Call by Value]

: 값에 의한 호출. 복사해 처리하므로 원래의 값이 보존됨.

[Call by Reference]

: 함수에서 값이 아닌 주솟값을 전달하는 방식. 복사하지 않고 직접 참조. 원래 값이 영향을 받음. (C언어에서는 call by address라고 함.) 값을 전부 복사할 필요가 없으므로 자원 낭비를 확실히 줄일 수 있다.

[c언어에서]
#include <stdio.h>

void swap1 (int a, int b){
	int temp;
    
    temp = a;
    a = b;
    b = temp;
}
void swap2 (int* a, int* b){
	int temp;
    
    temp = *a;
    *a = *b;
    *b = temp;
}
int main(){
	int a, b, c, d;
    a = 10;
    b = 20;
    c = 10;
    d = 20;
    printf("%d, %d, %d, %d", a, b, c, d);
    
    swap (a, b);	// 내부적으로 데이터가 처리되지만 a와 b에게 전달 X!
    swap (&c, &d);	// 함수 내부에서 주소를 바꿔버려서 c와 d 자체가 교체됨!
    
    printf("%d, %d, %d, %d", a, b, c, d);
    
    return 0;
}
    
[출력결과]
10, 20, 10, 20
10, 20, 20, 10
profile
코딩천재

0개의 댓글