Embedded/Programming language : C

[C] 가변 인수 (2) : 가변 인수 함수를 꼭 써야 가변인수를 사용할수 있는걸까?

별빛의온기 2022. 10. 28. 08:57
반응형

일반 함수 매개변수의 주소값과 가변인수함수의 주소값을 살펴보았습니다.

 

그 두가지의 주소값 할당은 비슷한점이 많았습니다. 그럼 아래와 같이 가변인수함수를 사용하지 않아도 가변인수의 값을 가져올 수 있지 않을까요?

#include <stdio.h>

int sum(int i, ...);

void main()
{
        printf("\n%d\n", sum(3, 1, 2, 3));

}

int sum(int i, ...)
{

	int sum = 0, j;
	int *p = &i + 1;

        for (j = 0; j<i; j++)
        {

	        sum += *(p + j); 
                printf("%d\t", sum);
        }
        return sum;
}
 

 

 

가변인수함수를 사용하지 않아도 가변인수 값들을 가져왔음을 확인할수 있습니다.

 

하지만 컴파일러나 환경에 따라서 주소값 할당방식이 달라서 안될수도 있다는 점....

 

이렇게도 가능하다라는걸 알아두기만 하세요~~

 

반응형