Возможный дубликат:
Как происходит разыменование указателя функции?
void myprint(char* x) {
printf("%s\n", x);
}
int main() {
char* s = "hello";
void (*test)(char*);
void (*test2)(char*);
test = myprint;
test2 = &myprint;
test(s);
(*test)(s);
test2(s);
(*test2)(s);
}
Может кто-нибудь объяснить мне, почему весь приведенный выше код действителен? "Привет" печатается четыре раза. Применяя указатель на функцию, неявно ли она защищена? В принципе, я хочу знать, как на самом деле хранятся указатели на функции, потому что выше это путает.