Neoteny

반응형

/***********************************************************/
// [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);
}

반응형