나는 내가 그렇게 같은 방법을 모방 C에서 함수 포인터를 사용할 수 있습니다 알고함수 포인터는 C에서 유해한 메소드를 시뮬레이트합니까?
typedef struct a
{
int x, y;
int (*add)(int x, int y);
}a;
int add(int x, int y)
{
return x + y;
}
int main()
{
a b = {2, 3, &add};
printf("%d\n", b.add(b.x, b.y));
return 0;
}
그러나 C에서이 나쁜 형태입니까? 이 작업을 수행하는 다른 방법을 찾아야합니까? 이것이 나쁘다면, 내가 대신이 일을해야합니까? 분명히 그것을 사용할 때이 예제에서와 같이 하찮은 함수가 될 수는 없습니다.
접근이 종류 :
과 :
따라서 코드처럼되어야한다. –
함수 포인터가 필요한 좋은 이유가 있는지 여부에 따라 다릅니다. Java 또는 C++에 익숙해 져서이 작업을 수행하는 경우 실제로는 좋은 이유가 아닙니다. 왜 당신은 "방법"이 필요하다고 생각합니까? – JS1
내 의견 : 그것은 런타임에 포인터를 변경하거나 여러 추가 유형 (조잡한 다형성)을 나타 내기 위해이 구조체를 사용하는 경우에 더 유용합니다. 포인터에 할당 된 '& add' 만 있으면이 작업을 더 간단하게 할 수 있습니다. –