No. En C, sólo se puede obtener un puntero a un área de almacenamiento (lo que significa una variable, un elemento de matriz, o de otro puntero, que ellos llaman los "L-valores"), no a ninguna expresión. No puede obtener un puntero a una expresión que no tiene un área de almacenamiento definida (como una adición o el resultado de una llamada a función). Sin embargo, debe tenerse en cuenta que C++ altera estas reglas con referencias, pero, en aras de la claridad, lo omitiré.
Los punteros no son mágicos: al final, son enteros. Por lo tanto, cuando obtienes el puntero de un puntero, es como si estuvieras obteniendo el puntero de un entero. No tiene más repercusiones.
Por ejemplo, si obtiene el puntero a a
en su código, solo está copiando esta dirección en otra variable. Nada le impide cambiar dicha variable:
int a;
int* p = &a;
p = NULL;
Y hacer esto, usted a
permanecerá inalterada. Todo lo que puede cambiar es a
es su valor. Su dirección es inmutable. Cualquier otra cosa implicaría que &a = NULL
(o cualquier otro valor de puntero) funcionaría, lo que no ocurre.
'b = & puntero' es la forma correcta de obtener la dirección del puntero a' a'. –