为什么会出现错误的输出从一个函数返回一个字符串
OUTPUT: 输入乌尔名字: saurav 你的名字是SA-(
#include <stdio.h>
#include <conio.h>
char * func();
int main()
{
printf("Your name is %s\n",func());
return 0;
}
char* func()
{
char L[10];
printf("Enter ur name:\n");
gets(L);
return L;
}
您正在调用未定义的行为,方法是返回一个自动变量'L'的地址,该变量在调用者使用该地址之前就已经过去了。有几十*这个问题的重复,[**这是其中之一**](http://stackoverflow.com/questions/16738954/returning-an-array-from-a-c-function)。并停止使用['gets()'](http://en.cppreference.com/w/c/io/gets)。 – WhozCraig 2014-10-19 18:36:32
您正在返回在'func'范围内创建的变量的地址 – adam10603 2014-10-19 18:42:00
迂回点:返回值'L'不是问题。这是'printf'取消引用该值以打印它期望在该地址处的字符串内容。如果代码是'printf(“你的名字是%p \ n”,func());' - >没有问题,只是会出现一个数字而不是名字。 – chux 2014-10-19 18:54:35