C 언어 포인터로 반환형 매개 변수 전달 방식 함수 만들기
함수를 호출하기 전에는 굳이 지역 변수를 초기화하지 않고 호출한 함수에서 전달한 값을 받아서 사용해야 하는 경우가 있습니다. 이런 경우에는 포인터 사용하여 반환형 매개 변수 전달 방식을 사용할 수 있습니다.
<코드> parameter_out.c
// parameter_out.c
#include <stdio.h>
void do_something(int* num)
{
*num = 1234; // [B] 역참조로 전달된 main 함수의 변수에 저장, 반드시 초기화해야 함
printf("[1] %d\n", *num); // [1] 1234
}
int main(void)
{
int num; // [A] 변수를 반드시 초기화할 필요없음
do_something(&num); // 반환형 매개 변수 전달 방식: 변수의 주소를 전달
printf("[2] %d\n", num); // [2] 1234
return 0;
}
</코드>
<실행>
[1] 1234
[2] 1234
</실행>
[A]번 코드처럼 지역 변수의 값을 초기화하지 않고 특정 함수에서 초기화하는 형태가 있습니다. 이런 경우에는 포인터 매개 변수 사용할 수가 있습니다.
[B]번 코드에서 1234로 초기화하면 역참조에 의해서 main 함수의 num 지역 변수가 1234로 초기화 됩니다.
[1]번 코드에서는 do_something 함수에서 초기화된 1234가 출력되고, [2]번 코드영역에서는 main 함수의 num 변수가 1234로 이미 초기화되었기에 1234가 출력됩니다.
포인터 매개 변수를 사용하면 어차피 특정 함수에서 초기화할 경우라면 전달할 때 초기화하지 않고 전달해도 됩니다.
감사합니다.
Comments
Comments are closed