連続スマソ。。。最後にこれだけ聞いてくれ

引数そのものを変える参照渡しの応用っぽい感じで
pにxのアドレスを入れるってのはどうやればいい?
これだと参照渡しにならないことはわかるんだけど
**pってやってもエラーになってわからん。
普通にp=&xってやりゃいいんだけど、それをあえて関数を使ってやった場合どうなるかって考えてたんだけど

#include <stdio.h>
#include <stdlib.h>

void func(int *p,int x);

int main(void){
int x=2;
int *p;
*p=3;
printf("pのアドレスは%p\n",p);
printf("xのアドレスは%p\n",&x);
func(&p,x);
printf("pのアドレスは%p\n",p);

return 0;
}

void func(int *p,int x){
p=&x;
}