c中的程序错误 - 解释

时间:2016-12-20 17:52:07

标签: c pointers memory-management

我有一个问题要问你。我正在阅读有关c和内存分配中指针的一些信息,我看到一个程序在运行时会产生错误:

#include <stdio.h>

char* getname(void){
    char nstring[25];
    printf("Please type your name");
    gets(nstring);
    putchar('\n')
    return nstring; //Serious error in this program
}

int main(void){
    char* myname;
    myname = getname();
    printf("%n\n", myname);
    return 0;
}

为什么代码中会出现“此程序中出现严重错误”的注释?我不明白错误发生在哪里。有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:1)

  

为什么代码中有“此程序中出现严重错误”的注释?

因为你要返回一个本地字符串 char nstring [25]; ,其范围和生命仅限于那个未定义行为的特定函数