Cómo devolver un puntero desde una función en C

Programa 1:

El siguiente programa dará una falla de segmentación ya que ‘A’ era local para la función:

C

// C program to illustrate the concept of
// returning pointer from a function
#include <stdio.h>
  
// Function returning pointer
int* fun()
{
    int A = 10;
    return (&A);
}
  
// Driver Code
int main()
{
    // Declare a pointer
    int* p;
  
    // Function call
    p = fun();
  
    printf("%p\n", p);
    printf("%d\n", *p);
    return 0;
}

Producción:
A continuación se muestra la salida del programa anterior:

Explicación:

obtiene

Programa 2:

C

// C program to illustrate the concept of
// returning pointer from a function
#include <stdio.h>
  
// Function that returns pointer
int* fun()
{
    // Declare a static integer
    static int A = 10;
    return (&A);
}
  
// Driver Code
int main()
{
    // Declare a pointer
    int* p;
  
    // Function call
    p = fun();
  
    // Print Address
    printf("%p\n", p);
  
    // Print value at the above address
    printf("%d\n", *p);
    return 0;
}
Producción:

0x601038
10

Publicación traducida automáticamente

Artículo escrito por Subhajit Guha Thakurta 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 *