Home > Study > C Language > C task > [ex05] 함수 등가포인터의 실행

[ex05] 함수 등가포인터의 실행
Study Language

문제 설명


#include <stdio.h>

int add(int a, int b)
{
   return a+b;
}

void f1(void)
{
   printf("func\n");
}

int * f2(void)
{
   static int a[4] = {1,2,3,4};

   return a;
}

void main(void)
{
   // p, q, r 선언






   // p, q, r에 대응 함수 대입






   printf("%d\n", add(3,4));
   f1();
   printf("%d\n", f2()[2]);

   // 위와 동일한 결과가 나오도록 p, q, r로 실행



}

출력 예시


7
func
3
7
func
3

정답 코드


#include <stdio.h>

int add(int a, int b)
{
	return a+b;
}

void f1(void)
{
	printf("func\n");
}

int * f2(void)
{
	static int a[4] = {1,2,3,4};

	return a;
}

void main(void)
{
	// p, q, r 선언
	int (*p)(int a, int b);
	void (*q)(void);
	int * (*r)(void);

	// p, q, r에 대응 함수 대입
	p = add;
	q = f1;
	r = f2;

	printf("%d\n", add(3,4));
	f1();
	printf("%d\n", f2()[2]);

	// 위와 동일한 결과가 나오도록 p, q, r로 실행
	printf("%d\n", p(3,4));
	q();
	printf("%d\n", r()[2]);
}

메모


printf 내부의 \n 습관화 필요