/***********************************************************/
// [4] : ellipsis의 인수 전달
// 넘겨받는 인수를 인쇄하기 위한 my_ellipsis 함수를 완성하시오
// 들어오는 데이터의 순서는 이미 알고 있다고 가정한다.
// cahr, int, float, double, long double가 전달될 때
// 실제 스택에는 어떻게 존재하는지를 분석하시오
/***********************************************************/
int add(int a, int b) {return a+b;}
void my_ellipsis(int a1, ...)
{
printf("%d\n", a1);
printf("%x\n", *(&a1+1));
printf("%c\n", *(&a1+2));
printf("%f\n", *(double *)(&a1+3));
printf("%f\n", *(double *)(&a1+5));
printf("%d\n", ((int *)*(&a1+7))[1]);
printf("%d\n", ((int (*)[3])*(&a1+8))[0][0] );
printf("%d\n", ((int (*)())*(&a1+8))(3,4) );
}
void main(void)
{
int a = 10; char b = 0xff; char c = 'A';
float d = 3.14; double e = 5.125;
int arr[3] = {10, 20, 30};
int arr2[2][3] = {1,2,3,4,5,6};
int (*p)() = add;
my_ellipsis(a,b,c,d,e,arr,arr2,p);
}