C | Clases de almacenamiento y calificadores de tipo | Pregunta 19 – Part 7

#include <stdio.h>
char *fun()
{
    static char arr[1024];
    return arr;
}
  
int main()
{
    char *str = "geeksforgeeks";
    strcpy(fun(), str);
    str = fun();
    strcpy(str, "geeksquiz");
    printf("%s", fun());
    return 0;
}

(A) geeksforgeeks
(B) geeksquiz
(C) geeksforgeeks geeksquiz
(D)

Respuesta de error del compilador : (B)
Explicación: tenga en cuenta que arr[] es estático en fun(), por lo que no hay problemas con la dirección de retorno, arr[] permanecerá allí incluso después de que fun() regrese y todas las llamadas a fun() compartan el mismo arr[].

    strcpy(fun(), str);  // Copies "geeksforgeeks" to arr[]
    str = fun();    // Assigns address of arr to str
    strcpy(str, "geeksquiz");  // copies geeksquiz to str which is address of arr[]
    printf("%s", fun());   // prints "geeksquiz"

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

Deja una respuesta

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