首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小疑点,这是为什么

2013-12-07 
小问题,这是为什么?#include iostreamusing namespace stdchar *f(){char x[512]sprintf(x,hello wor

小问题,这是为什么?

#include <iostream>
using namespace std;
char *f()
{
char x[512];
sprintf(x,"hello world");
return x+6;
}
int main()
{
printf("%s",f());
return 0;
}

vc6.0下面没有输出?我怎么觉得是world?求解
[解决办法]
尽量不要返回局部变量!是错误的做法,只是编译器帮你优化了而已!

#include <iostream>
using namespace std;
char *f(char *x)
{
  //  char x[512];
    sprintf(x,"hello world");
    return x+6;
}
int main()
{
    char x[512] = {0};
    printf("%s",f(x));
    return 0;
}

[解决办法]
返回了局部变量指针
[解决办法]
x是局部变量,函数返回后,其空间是不受控的

热点排行