One big red flag that I see in all your explanations is that you always stick the * next to the name of the pointer. This hints at a classic misunderstanding beginners have with pointers. Notice how I always stuck the * next to the type in the declarations, not next to the variable name (it makes no difference in compilation, but it makes a difference when it comes to understanding it right). Understand this:
int* ptr; //this declares a variable called 'ptr' which stores a pointer (i.e. the address) to an integer (not allocated here).
When you are not in a declaration, if you put the * next to the pointer's name, it will dereference the pointer, meaning it will fetch the value at the address stored in the pointer variable.
When you have a variable, and apply the & operator on it, it takes the address of the variable. The address of a variable is just a value, a temporary value, it is not a pointer variable, and it is certainly not the pointer variable from which the original variable was obtained by dereferencing with *. When you have something that is a value, but is not a variable, in C++ lingo, it is called an rvalue (because it is not a variable, you cannot store values in it, but since it is a value, you can assign that value to a variable, i.e. it can appear on the right-hand-side of an assignment).
>>and it will have the same effect as &*raiz=&*p;
No. As I said, that statement should not compile, has no sensible meaning, probably does nothing if it happens to compile on your crappy windows compiler, but it really is unknown what the effect of that statement is. So, no raiz = p; does not have the same effect as &*raiz = &*p; , because the latter has an unknown effect if any.
>>well, what I´m trying to do is to save the pointer of the root of my avl tree(*raiz) and then make all the modifications, and save the resulting tree in *raiz.
Then it would appear that the statement you are looking for is:
*raiz = *p;
But, to be sure, you should explain how this function is called, how is the parameter passed on the call-site, and what you expect will happen to the parameter after the function is finished. It looks to me like you might find that pass-by-reference is what you need.