ちょっと質問だけど関数ポインタで

struct st1{
int n
void (*func)(int n);
}ST1;

void func1(int n) {
.
.
return;
}

void func2(int n) {
ST1 st;

st.func = func1;
(func)(n);
return;
}

こういうのってありですか?