¿Cómo definir punteros de función?
1. Método estándar:
Análisis: una matriz de punteros de función es una matriz cuyos elementos son punteros de función. En otras palabras, esta estructura de datos es una matriz y sus elementos son punteros a las direcciones de entrada de la función. ?
Según el análisis: En primer lugar, es una matriz: ¿nombre de la matriz []?
En segundo lugar, debe especificar el puntero del tipo de datos de sus elementos: *nombre de matriz[]. ?
En tercer lugar, es necesario dejar claro que cada elemento de la matriz es un puntero a la dirección de entrada de la función: tipo de valor de retorno de la función (*nombre de la matriz[])(). Tenga en cuenta por qué "*nombre de matriz []" se expande entre corchetes aquí. Debido a que los paréntesis y los especificadores de matriz tienen la misma prioridad, si los paréntesis no se usan para expandir la expresión de descripción de la matriz de punteros, ¿qué significa *nombre de matriz []() según la dirección de combinación de paréntesis y corchetes? Es una matriz de funciones cuyo tipo de valor de retorno de elemento es un puntero. ¿Existe tal función ancestro? No lo sé, así que tengo que ponerlo entre corchetes para asegurarme de que cada elemento de la matriz sea un puntero.
2. Método de engaño:
Aunque esta función no es una variable, todavía tiene su dirección física en la memoria y esta dirección se puede asignar a una variable de puntero. La forma de obtener una función es utilizar el nombre de la función sin paréntesis ni argumentos.
El nombre de la función equivale a un puntero constante que apunta a su entrada de función. Entonces, dado que el nombre de la función es una constante de puntero, se puede realizar algún procesamiento correspondiente, como la conversión de tipo forzada. ?
Luego podemos poner esta dirección en una matriz de punteros enteros y llamarla como un puntero de función.
(1) Llamar a una función usando una variable de puntero de función
Puede usar una variable de puntero para señalar una variable entera, cadena, matriz, estructura o función. A una función se le asigna una dirección de entrada en el momento de la compilación. Esta dirección de entrada se llama puntero de función. Puede usar una variable de puntero para señalar una función y luego llamar a la función a través de la variable de puntero. Tome una comparación numérica simple como ejemplo:
1 # include & lt;stdio.h & gt
2 #include & ltstdlib.h & gt
3?
4 ?int main()
5 {
6 int max(int, int);
7 int ( *p)(int, int);
8 int a, b, c;
9 p = máximo
10 scanf("%d, %d ",&一,&b);
11 c = (*p)(a,b);
12 printf("a=%d,b= %d , max=%d\n ", a, b, c);
13 devuelve 0;
14 }
15?
16 int max(int x, int y)
17 {
18 int z;
19 if(x & gt; y) z = x;
20 más z = y;
21 retorno (z)
22 }