📜  C |存储类和类型限定符|问题19

📅  最后修改于: 2021-05-29 12:58:15             🧑  作者: Mango

#include 
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;
}

(一)极客
(B)怪胎
(C) geeksforgeeks geeksquiz
(D)编译器错误答案: (B)
说明:请注意arr []在fun()中是静态的,因此返回地址没有问题,即使fun()返回并且所有对fun()的调用都共享同一个arr [],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的C基础课程》。