Я не понимаю, почему передача указателя на функцию не изменяет передаваемые данные. Если функция proto выглядела так:
void func( int *p );
и func выделяет память на p, почему ее нельзя использовать вне функции? Я думал, что указатели были адресами?