c++ - Calling function via pointer -
here simple code
#include<iostream.h> #include<stdlib.h> #include<conio.h> void (*func[2])(int); void main(int n=1) { int i; cout<<endl<<n; func[0]=&exit; func[1]=&main; i=++n<=10; (func[i])(n); }
here satisfied output (i.e. 1 10 in different lines). thing confused me why global pointer of type void (*ptr[2])(int). if possible, please explain in simple words why pointer taken specifically
it's not pointer, it's array of 2 pointers.
this function:
void func(int);
this pointer function:
void (*func)(int);
and array of 2 pointers functions:
void (*func[2])(int);
so func[i]
points exit
if i
0 (i.e. if n
greater 10), , points main
otherwise, i
1.
note you're not allowed call main
recursively this, nor give main
signature other int main()
or int main(int, char**)
. (at least, that's case in modern c++; these rules presumably don't apply prehistoric dialect compiler accepts).
Comments
Post a Comment