Рубрики

C | Классы хранения и классификаторы типов | Вопрос 19

#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
(С) geeksforgeeks geeksquiz
(D) Ошибка компилятора

Ответ: (Б)
Объяснение: Обратите внимание, что arr [] является статическим в fun (), поэтому проблем с возвратом адреса не возникает, arr [] останется там даже после того, как fun () вернется и все вызовы fun () будут использовать один и тот же 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"

Тест на этот вопрос

Рекомендуемые посты:

C | Классы хранения и классификаторы типов | Вопрос 19

0.00 (0%) 0 votes