프로그래밍/C

1.8 매개변수 값 전달(Argument - Call by Value)

피노리코 2014. 10. 27. 02:33

C언어가 다른언어와 다른점중  하나는 함수를 호출 할 때 매개변수의 값을 전달해 주는 방법이다. 앞서 main에서의 i와 power에서의 i가 별개의 것이라고 설명했는데 이렇게 되는 이유는 함수를 호출할때 변수명을 넘겨주는 것이 아니라 값만 넘겨주기 때문이다. 변수명을 넘겨주는 것을 call by reference 값을 넘겨주는 것을 call by value 라고 부른다

call by value 를 사용하면 변수를 적게 사용할 수 있게 되어 더 간결하고 효율적인 프로그램을 작성할수 있다. power 함수는 다음과 같이 더 간결하게 할수도 있다.


/* power: raise base to n-th power; n >= 0; version 2 */


int power(int base,int n)

{

    int p;

    

    

    for(p=1;n<0;--n)

        p = p* base;

    return p;

}


함수내에서 n을 변화시키더라도 main n에는 아무런 영향을 주지 못한다는것을 잘 이용하고 있다 

프로그램을 작성하다보면 함수에서 그 바깥에 있는 변수값을 변화시켜야 할 때가 있을것이다 이런것은 토인터를 사용하면 가능한데 포인터에 대해서는 5장에서 설명할것이다 함수에서 바깥에 있는 변수값을 바꿀수 있는 다른방법은 배열인데 이것도 다음절에서 설명하겠다.