¿Qué declara la siguiente declaración C? [1 punto]
int ( * f) (int * ) ;
(A) Una función que toma un puntero entero como argumento y devuelve un número entero.
(B) Una función que toma un número entero como argumento y devuelve un puntero de número entero.
(C) Un puntero a una función que toma un puntero entero como argumento y devuelve un entero.
(D) Una función que toma un puntero entero como argumento y devuelve un puntero de función
Respuesta: (C)
Explicación: Los pasos para leer declaraciones complicadas:
1) Convierta la declaración C a formato postfijo y lea de izquierda a derecha.
2) Para convertir una expresión a sufijo, comience desde el paréntesis más interno. Si el paréntesis más interno no está presente, comience desde el nombre de las declaraciones y vaya primero a la derecha. Cuando se encuentre por primera vez con un paréntesis final, vaya a la izquierda. Una vez que se analiza todo el paréntesis, salga del paréntesis.
3) Continúe hasta que se haya analizado la declaración completa.
En primer lugar, convertimos la siguiente declaración dada en sufijo:
int ( * f) (int * )
Como no hay un corchete más interno, primero tomamos el nombre de declaración f, imprima «f» y luego vaya a la derecha, ya que no hay nada que analizar, vaya a la izquierda. Hay * en el lado izquierdo, así que escriba «*». Salga del paréntesis. Por lo tanto, la notación posfijo de una declaración dada se puede escribir de la siguiente manera:
f * (int * ) int
Significado: f es un puntero a la función (que toma un argumento del tipo de puntero int) que devuelve int .
Consulte https://www.geeksforgeeks.org/complicated-declarations-in-c/
Esta solución es aportada por Nirmal Bharadwaj .
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA