Call - By
c언어에서 호출하는 방식의 차이임
총 3가지가 있음
1. call by value (값에 의한 호출)
2. call by address (주소에 의한 호출)
3. call by reference ( 참조에 의한 호출)
예제를 통해 하나씩 살펴보자
1. call by value
예를들어 다음과 같이 두개의 매계변수를 받아 두 수를 교환하는 프로그램이 있다고 해보자
#include <stdio.h>
void swap(int x, int y)
{
int tmp;
tmp = x;
x = y;
y = tmp;
}
int main()
{
int a = 20;
int b = 30;
swap(a,b);
printf("%d , %d \n", a,b);
}
일케해서 프린트 문 찍으면 바뀔거 같은데 안바뀜 , 그냥 바뀌는건 swap() 함수내에서만 바뀌고 메인에서는 int a = 20; int b = 30 이니까 출력이 20 , 30 걍 일케댐 그럼 어케해야
하냐 해서 나온게 call by address 임
2. call by address
위에랑 똑같은 프로그램인데 이번엔 좀 다름 자세히 봐보셈 ㅋ
#include <stdio.h>
void swap(int *x, int *y)
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
int main()
{
int a = 20;
int b = 30;
swap(&a,&b);
printf("%d , %d \n", a,b);
}
#include <stdio.h>
int main()
{
int a = 20;
int *p = &a;;
printf("%d\n", a);
printf("%d\n", &a);
printf("%d\n", *p);
}
#include <stdio.h>
void swap(int &x, int &y)
{
int tmp;
tmp = x;
x = y;
y = tmp;
}
int main()
{
int a = 20;
int b = 30;
swap(a,b);
printf("%d , %d \n", a,b);
}
정리 끝