我有一个问题要问你。我正在阅读有关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;
}
为什么代码中会出现“此程序中出现严重错误”的注释?我不明白错误发生在哪里。有人可以向我解释一下吗?
答案 0 :(得分:1)
为什么代码中有“此程序中出现严重错误”的注释?
因为你要返回一个本地字符串 char nstring [25]; ,其范围和生命仅限于那个未定义行为的特定函数