인자 vs 매개변수 차이점

( 제대로 된 )프로그래밍 관련 책을 보면
보통 말머리에 이 인자매개 형식 변수의 차이 점에 대해 반드시 언급한다.
비록 아주 기초적인 부분이지만 그 만큼 중요한 개념이란거다.

정리 들어간다.

인자( Argument ) 는 어떤 함수를 호출시에 전달돼는 값을 말하고
매개 형식 변수( Parameter ) 는 그 전달된 인자를 받아들이는 변수다.

여기서 포인트는 인자는 값, 매개 형식 변수는 말 그대로 변수라는 점이다.

예를 들면 이런거지.

void Func( int A )
{
    int B = 0;
    printf("%d\n",A);
}

int main( int argc, char* argv[] )
{
    int MyAge = 31;
    Func( MyAge );
}

여기서 인자는 Func() 함수를 호출할때 전달돼는 MyAge 이고
Func() 함수 구현 부의 헤더 부( 함수이름, 반환값, 매개 변수 )의 int A 가 매개 형식 변수이다.

뭐 인자야 별거 없으니 이정도로 마무리 짓고
매개 형식 변수에 대해 조금만 더 깊이 들어가 봅시다. 

간단히 호출 스택 얘기부터 시작해봅시다.
이 호출 스택( 다른 말로 Activation Record )은 
함수를 호출할시 그에 대한 정보 유지 및 관리 용도로 사용돼는 일종의 자료구조다.

프로그램이 실행돼면 CPU가 PC( Program Counter : 현재 실행할 지점의 코드를 가르키는 역할 )를 이용해 
코드를 훑고 내려가는데 이때 함수 호출 부를 만났다면

호출된 함수의 정보를 유지하기 위해 스택 공간에 메모리를 할당하는데 
그 크기는 그 함수의 매개 변수와 함수 블록 내에서 선언된 지역 변수의 전체 크게에 의해 결정된다.
- 그 밖에 복귀 주소( Return Address : 호출된 함수가 종료될시 실행흐름( PC)이 돌아가야할 주소 )등이 
   이 호출스택에 들어간다.

그런 다음, 함수의 인자가 이미 앞서 할당됐던 매개 변수에 대입된다.
- 매개 변수에 인자가 어떤 순서로 대입돼는지는 호출 규약에 따른다.

결론은 매개 형식 변수의 성질은 사실 지역 변수와 동일하다는 거다.
-물론 인자는 못 받겠지만.


출저: http://blog.naver.com/kzh8055/140052951957 

이 글을 공유하기

댓글

Designed by JB FACTORY