¿Diferencia entre int* p() e int (*p)()?

Un puntero es una variable cuyo valor es la dirección de otra variable, es decir, la dirección directa de la ubicación de memoria. Como cualquier variable o constante , se debe declarar un puntero antes de almacenar cualquier dirección de variable. La forma general de una declaración de variable de puntero es:

Sintaxis:

type *var_name;

Aquí, type es el tipo base de los punteros. Debe ser un tipo de datos C / C++ válido y var-name es el nombre de la variable de puntero. El asterisco * se utiliza para designar una variable como puntero. A continuación se muestra la declaración de puntero válida para su respectivo tipo de datos:

int *ip;
float *fp;
double *dp;
char *cp;

En este artículo, el enfoque es diferenciar int* p() e int (*p)() .

int* p() : Aquí “p” es una función que no tiene argumentos y devuelve un puntero entero.

int* p()
returntype function_name (arguments)

A continuación se muestra el programa para ilustrar el uso de int* p() :

C++

// C++ program to demonstrate the use
// of int* p()
#include <bits/stdc++.h>
using namespace std;
  
// Function that returns integer pointer
// and no arguments
int* p()
{
    int a = 6, b = 3;
    int c = a + b;
    int* t = &c;
    return t;
}
  
// Driver Code
int main()
{
    // Declare pointer a
    int* a = p();
    cout << *a;
}
Producción:

9

int (*p)(): Aquí “p” es un puntero de función que puede almacenar la dirección de una función sin argumentos y devolviendo un número entero. *p es la función y ‘ p ‘ es un puntero.

A continuación se muestra el programa para ilustrar el uso de int (*p)() :

C++

// C++ program to demonstrate the use
// of int* (*p)()
#include <bits/stdc++.h>
using namespace std;
  
// Function with no arguments
// and return integer
int gfg()
{
    int a = 5, b = 9;
    return a + b;
}
  
// Driver Code
int main()
{
    // Declaring Function Pointer
    int (*p)();
  
    // Storing the address of
    // function gfg in function
    // pointer
    p = gfg;
  
    // Invoking function using
    // function pointer
    cout << p() << endl;
}
Producción:

14

Publicación traducida automáticamente

Artículo escrito por ArifShaikh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *