C언어의 기초 문법

포인터와 함수; Call by Reference

 전에 '함수의 작동 방법' 편에서 'Call by Value'를 배웠습니다. 그건 변수의 값이 복사되어서 간 것이고, 실제 변수의 값은 바뀌지 않는다고 했습니다. 그런데 이 상황을 보실까요?

int add(int *x, int *y){
    *x += *y;
    return *x;
}
int main(){
    int a = 5, b = 5;
    printf("%d %d", add(a, b), a);
}

이렇게 하면 매개변수가 포인터 변수가 되면서 함수가 작동 할 때 a, b의 실인수 값이 바뀝니다. 그래서 출력문은 10, 10이 되는 것이죠.

댓글

댓글 본문
버전 관리
Joel
현재 버전
선택 버전
graphittie 자세히 보기