반응형
일반 함수 매개변수의 주소값과 가변인수함수의 주소값을 살펴보았습니다.
그 두가지의 주소값 할당은 비슷한점이 많았습니다. 그럼 아래와 같이 가변인수함수를 사용하지 않아도 가변인수의 값을 가져올 수 있지 않을까요?
#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;
}
가변인수함수를 사용하지 않아도 가변인수 값들을 가져왔음을 확인할수 있습니다.
하지만 컴파일러나 환경에 따라서 주소값 할당방식이 달라서 안될수도 있다는 점....
이렇게도 가능하다라는걸 알아두기만 하세요~~
반응형
'Embedded > Programming language : C' 카테고리의 다른 글
[C] 가변 인수 (1) : 가변 인수 함수의 주소는 어떻게 될까 (0) | 2022.10.28 |
---|---|
[C] 선언한 배열의 index 이상을 접근하면 어떻게 될까? (0) | 2022.10.27 |
[C] Typedef 손쉽게 이해하기. (1) | 2022.10.27 |
[C] 매크로 함수 이해하기 (0) | 2022.10.26 |
[C] 매크로 함수에서 do~while(0)을 쓰는 이유 (0) | 2022.10.26 |