¿Cuál es la diferencia entre un puntero de función y un puntero?
El puntero de función es un tipo de puntero C.
Preguntar "¿Cuál es la diferencia entre punteros de función y punteros?" Muestra que LZ es bastante descuidado con los punteros. Modifica tu pregunta:
"¿Cuál es la diferencia entre puntero de función y puntero de entero?"
En este caso te diré:
Ambos. son punteros.
2. El puntero de función almacena la primera dirección de la función y el puntero de número entero almacena la dirección de la variable entera.
3. Por lo tanto, se deben eliminar las referencias a todas las referencias cuando se utilicen. Los punteros de función se desreferencian de manera diferente que los punteros de números enteros. Hay dos métodos de desreferenciación para punteros enteros:
Por ejemplo, puntero entero pi:
int I = 0;
int * pi = & amp I;
p>
Método de desreferencia 1:* pi
Método 2: pi[0]
Para puntero de función pf:
int f(int );
int(* pf)(int)= f;
Método de desreferencia: pf(8);
Desreferencia de puntero entero Método dos: pi[0] se parece más a una matriz. También es más como una forma de eliminar la referencia a un puntero de función, ya que:
Los nombres de matrices y de funciones son esencialmente direcciones. La esencia de un puntero es también una dirección.
4. Como puede verse en los ejemplos anteriores, los formularios de asignación son diferentes.
Puntero de función pf = f (no es necesario &. De hecho, es lo mismo)
Puntero de entero pi = &;i;
El El motivo es el nombre de la matriz, la esencia del nombre de la función es la dirección y la esencia de la variable entera (cuando se permite lvalue o rvalue) es el valor en la dirección.
5. Para los punteros de función, las operaciones de incremento generalmente no están permitidas. Por ejemplo: pf++ 99.9999% fallará.
Si desea acceder a una matriz de funciones, debe utilizar una matriz de punteros de función.